ChatGPTのデスクトップアプリや「Codex(Codex CLI/VS Code拡張)」を使ったあと、アプリを閉じたのに数秒おきに一瞬だけ「黒い画面(cmd.exe)」がパッと出て消える現象が急増しています。
さらに次回起動時に「指定されたファイルが見つかりません(os error 2)」と出て起動できなくなるトラブルも多く報告されています。
黒い画面が点滅するたびに入力フォーカスが奪われて文字が打てなくなったり、「ウイルスでは?」と不安になったりしますよね。
結論からお伝えすると、この現象はウイルスではありません。
アプリ終了後もWindowsの裏側で「codex-app-server-daemon」や「codex-command-runner」というデーモンが生き残り、約5秒周期で子プロセス(cmd.exe)を呼び出し続けていることが原因です。
- 黒い画面が連発する原因:閉じた後も裏で残る親デーモン(
codex-app-server-daemon)が約5秒おきにcmd.exeを呼んでいるため - 3秒で完全停止する手順:PowerShellで 「taskkill /F /IM “codex*” /T」 を1行実行して親と子をツリーごと止める
- 起動不能・文字化けの復旧:.codex内の
.lockを削除してnpm install -g @openai/codex@latest --forceで1分復旧!
手元のパソコン実機(Windows 11 Pro 24H2 ビルド 26100.9711 / PowerShell & Codex CLI)で、実際に残留デーモンの特定から3秒停止コマンド、ロック削除による起動復旧までを検証してまとめました。
大きな赤枠と丸番号(①・②)付きの実機画面と動画に沿って進めるだけで、黒い画面の点滅も起動エラーも1分でスッキリ解決できますよ。
Codexを閉じた後も「黒い画面(cmd.exe)」が点滅・連発する原因は?

CodexやChatGPTを閉じた後も黒い画面が連発する原因は、親プロセス「codex-app-server-daemon.exe」が常駐し続け、約5秒周期で子プロセス(cmd.exe)を起動しているためです。
PowerShellからプロセスツリーごと強制終了すれば、約3秒で黒い画面の点滅を完全に止められます。
OpenAIの公式GitHub Issue(openai/codex Issues)でも複数報告されている通り、Windows環境で非表示フラグ(CREATE_NO_WINDOW)が引き継がれないケースがあります。
結果として「一瞬だけ黒い枠が画面に出てすぐ消える(ゴーストウィンドウ現象)」が発生します。

上の実機診断ログ(赤枠①・②)の通り、右上の「×」ボタンで画面を閉じても、裏側では codex-app-server-daemon.exe(①) と codex-command-runner.exe(②) が動き続けています。

実際にPowerShellで Get-Process を実行すると(赤枠①)、閉じた後でも codex-app-server-daemon(赤枠②) がメモリを100MB以上消費して稼働中であることが確認できます。
| 起きているトラブル症状 | 裏側で動いている原因プロセス・ファイル | 放置した時の影響と解決アプローチ |
|---|---|---|
| ① 数秒おきに黒い画面が一瞬出て消える | codex-app-server-daemon / codex-command-runner | 入力フォーカスが奪われ作業不能になる ➔ taskkill /T でツリーごと停止 |
| ②「指定されたファイルが見つかりません」 | %USERPROFILE%\.codex\*.lock と破損バイナリ | デーモン稼働中の更新で .exe が欠損 ➔ ロック削除+npm install -g 再導入 |
| ③ 日本語が「」に文字化けする | Windows標準の Shift-JIS(CP932) コードページ | UTF-8出力が化けてエラー停止 ➔ chcp 65001 と $PROFILE 設定で解決 |
常駐する「codex-command-runner」やデーモンをPowerShellで3秒停止する手順は?
裏で暴走しているデーモンを完全に止めるには、PowerShellから「taskkill /F /IM “codex*” /T」を1行(所要時間3秒)実行し、親デーモンと子プロセスのツリー全体を一括で強制終了するのが最も確実です。
あわせてタスクスケジューラの自動起動を無効化しておけば、PC再起動後の再発も防げます。
Microsoft公式リファレンス(Microsoft Learn:Stop-Process)で解説されている通り、Stop-Process -Force と子プロセスまで停止する taskkill /T を組み合わせます。
親子ツリーごと終了させることで、しつこく復活するランナーを一発で根絶できます。


それでは、上の拡大写真の赤丸番号(①・②)と同じ順番で、残留デーモンを完全停止してみましょう。
- キーボードの 「Windowsキー + X」 を押し、メニューから[ターミナル](または PowerShell)を開きます。
Get-Process | Where-Object { $_.ProcessName -match "codex" } | Stop-Process -Forceに続けて、taskkill /F /IM "codex*" /T(赤枠②) を貼り付けて Enter キーを押します。- パソコン再起動後に勝手に動き出すのを防ぐため、
Get-ScheduledTask | Where-Object { $_.TaskName -match "codex" } | Disable-ScheduledTaskを実行し、自動起動タスクを [Disabled](STEP 4写真の赤枠②) に変更します。
| 停止・再発防止の方法 | 実行するコマンド・操作 | 子プロセス復活の防止効果 |
|---|---|---|
| ① タスクマネージャーで1個ずつ終了 | [詳細]タブで codex を右クリック>タスクの終了 | △ 親デーモンが残っていると1〜2秒後に自動復活する |
| ② PowerShell+taskkill /T(推奨) | taskkill /F /IM “codex*” /T を1行実行 | ◎ 親デーモンと子ランナーを3秒で同時根絶できる |
| ③ 自動起動タスクの無効化 | Disable-ScheduledTask で Disabled に変更 | ◎ Windows再起動後の勝手なバックグラウンド起動を防止 |
【2026年最新】「指定されたファイルが見つかりません」や文字化けで起動不能になった時の復旧手順は?
「指定されたファイルが見つかりません(os error 2)」で起動不能になった時は、「① .codex 内のロック削除 ➔ ② npm install -g @openai/codex@latest –force」の2手順(約1分)で100%復旧できます。
日本語の文字化けも chcp 65001(UTF-8化)の1行追加で即座に解消します。
OpenAIの公式Codex CLIドキュメント(OpenAI Developers:Codex CLI)でも案内されている通り、デーモン稼働中に更新が走ると実行バイナリの展開がロックされて欠損します。




手元のWindows 11実機で「残留プロセスの特定 ➔ taskkill /T による3秒停止 ➔ ロック削除とクリーン再導入 ➔ UTF-8設定と正常起動確認」までを撮影した実機操作動画もご覧ください。
▲ 【実機操作動画】Codex終了後に連発する黒い画面(残留デーモン)を停止し、起動エラーを復旧するまでの実際の流れ
- まず
taskkill /F /IM "codex*" /T 2>$nullを実行して、ファイルをロックしている裏のデーモンを完全に止めます。 - 次に
Remove-Item -Path "$env:USERPROFILE\.codex\*.lock", "$env:USERPROFILE\.codex\*.pid" -Force -ErrorAction SilentlyContinue(STEP 6写真の赤枠①) で破損ロックを消し、npm install -g @openai/codex@latest --force(赤枠②) で再配置します。 - 日本語が「」に文字化けする場合は、
chcp 65001; [Console]::OutputEncoding = [System.Text.Encoding]::UTF8(STEP 7写真の赤枠①) を実行し、codex --version(STEP 8写真の赤枠②)で起動を確認します。
# ① 残留しているCodexデーモンと子プロセス(黒い画面の元凶)をツリーごと完全停止
Get-Process | Where-Object { $_.ProcessName -match "codex" } | Stop-Process -Force -ErrorAction SilentlyContinue
taskkill /F /IM "codex*" /T 2>$null
# ② .codex フォルダ内の破損ロックファイル(起動不能の原因)を削除
Remove-Item -Path "$env:USERPROFILE\.codex\*.lock", "$env:USERPROFILE\.codex\*.pid" -Force -ErrorAction SilentlyContinue
# ③ UTF-8(コードページ 65001)を適用して日本語の文字化けを防止し、バージョン確認
chcp 65001 > $null
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
codex --version| 復旧ステップ | 実行するコマンド(PowerShell) | 解決できる症状・効果 |
|---|---|---|
| STEP 1:デーモンのツリー停止 | taskkill /F /IM “codex*” /T | 数秒おきに出る「黒い画面(cmd.exe)」の点滅・連発が即座に止まる |
| STEP 2:ロック削除&再導入 | Remove-Item “$env:USERPROFILE\.codex\*.lock” + npm i -g @openai/codex@latest –force | 「指定されたファイルが見つかりません(os error 2)」の起動不能が直る |
| STEP 3:UTF-8(65001)固定 | chcp 65001 + [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 | 日本語プロンプトや日本語フォルダ名の「文字化け()」が解消する |
あわせて、ChatGPTで作った構成案をPowerPointスライドへ出力する最新手順は 【2026年最新】ChatGPTでパワポ(PPTX)を自動作成する手順!スライド出力のやり方と崩れないコツ で解説しています。
さらに、Geminiアプリの標準モデル切り替えについては 【2026年最新】Gemini 3 Flashへの切り替え方法と規定モデル変更手順!高速応答を使いこなす設定ガイド もぜひご覧ください。

【2026年版】ChatGPT・Codexの黒い画面連発と起動エラーでよくある質問(FAQ)は?
Codexのバックグラウンド動作に関する質問3件について、公式仕様(OpenAI Release Notes)と実機検証に基づき回答します。
事前にプロセス構造を知っておけば、再発時も3秒で安全に対処できます。
Q1. 数秒おきに一瞬出る「黒い画面」はウイルスや不正アクセスではないのですか?
ご安心ください、ウイルスではありません。
正体は、Codexのローカル実行環境(codex-app-server-daemon.exe)が通信確認のために呼び出しているWindows標準の cmd.exe です。
本記事の taskkill /F /IM "codex*" /T を実行すれば、すぐに黒い画面は出なくなります。
Q2. タスクマネージャーで「codex」を1つ終了しても、すぐまた復活してしまうのはなぜですか?
親プロセスである codex-app-server-daemon が生きていると、子プロセスを終了させても1〜2秒後に自動で再生成するためです。
/T(ツリー終了)を付けた taskkill /F /IM "codex*" /T で親と子を同時に止めるのが正解です。
Q3. 「指定されたファイルが見つかりません」を直す時に .codex フォルダごと消しても大丈夫ですか?
C:\Users\user\.codex\ の中には、設定ファイル config.toml が入っている場合があります。
設定が消えるのを防ぐため、.lock と .pid だけを削除した上で npm install -g @openai/codex@latest --force を実行してください。
# ① 残留しているCodexデーモンと子プロセス(黒い画面の元凶)をツリーごと完全停止
Get-Process | Where-Object { $_.ProcessName -match "codex" } | Stop-Process -Force -ErrorAction SilentlyContinue
taskkill /F /IM "codex*" /T 2>$null
# ② .codex フォルダ内の破損ロックファイル(起動不能の原因)を削除
Remove-Item -Path "$env:USERPROFILE\.codex\*.lock", "$env:USERPROFILE\.codex\*.pid" -Force -ErrorAction SilentlyContinue
# ③ UTF-8(コードページ 65001)を適用して日本語の文字化けを防止し、バージョン確認
chcp 65001 > $null
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
codex --version