自動起動したCLIエージェントが初回プロンプトで固まる問題を潰す
無人で起動した Claude Code 等の TUI が「テーマ選択」「フォルダ信頼」の初回プロンプトで無言のまま止まる問題の恒久対策。theme を settings.json に置く理由(別ファイルに書くと消える)、信頼ゲートを人の同意付きで通す型、スクリーンショットで入力待ち到達まで目視する検証手順、効かない検証方法3つ。
約2.9万トークンの節約 (API料金換算で約43円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「自動起動したCLIエージェントが初回プロンプトで固まる問題を潰す」は、業務自動化カテゴリのAI指示書(MDファイル)です。無人で起動した Claude Code 等の TUI が「テーマ選択」「フォルダ信頼」の初回プロンプトで無言のまま止まる問題の恒久対策。theme を settings.json に置く理由(別ファイルに書くと消える)、信頼ゲートを人の同意付きで通す型、スクリーンショットで入力待ち到達まで目視する検証手順、効かない検証方法3つ。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約2.9万トークン(API料金換算で約43円)・90%のトークンを節約できます。
- カテゴリ
- 業務自動化
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約3.2万トークン
- この巻物使用時
- 約3,200トークン
- 節約量
- 約2.9万トークン (約43円)
- 更新日
- 2026-08-30
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/cli/raw を読み込んで、この指示書どおりに実装して"
中身
自動起動した CLI エージェントが「初回プロンプト」で無言のまま固まる問題を潰す
対象: Windows で Claude Code を cmd /c start ... claude.cmd "<プロンプト>" のように人が見ていない窓から起動する自動化
(セッション自動再開、夜間バッチ、タスクスケジューラ等)。同種の TUI ツール全般にも応用できる。
症状
自動起動の仕組みは正しく動いているのに、窓が初回プロンプトで止まったまま何時間も放置される。 プロセスは生きているのでヘルスチェックも通り、誰も気付かない(実測: 27分放置。同型で丸1日眠っていた例もある)。
止める犯人は2つある。IDE 拡張から起動している間は一度も出ないので、自動化を書いた本人は再現できない。
- テーマ選択
Choose the text style that looks best with your terminal - フォルダ信頼
Quick safety check: Is this a project you trust?
原因1: テーマ未設定 — 置き場所を間違えると消える
~/.claude/settings.json に "theme": "dark" を入れる。
{ "theme": "dark", "hooks": { } }
~/.claude.json(グローバル状態ファイル)側に theme を書いても数十秒で消える。アプリが状態を書き戻すとき、
知らない top-level キーとして落とされるため。実測では書いた25秒後に消滅し、同時に書いた別キー
(projects[].hasTrustDialogAccepted)は正規キーなので残った。
「書いた直後に効いた」ことを根拠に完了報告すると、後で静かに戻る。書いてから20〜30秒待って読み直すこと。
版によっては config サブコマンドが存在しない。<cli> config get theme と打つとサブコマンドではなくプロンプトとして解釈され、
セッションが1本立ち上がってトークンを溶かすので、まず <cli> --help でサブコマンドの有無を確認する。
原因2: 作業フォルダが未信頼 — ここは勝手に潰さない
信頼状態は ~/.claude.json の projects["<パス>"].hasTrustDialogAccepted。キーはツールが書く形式に合わせる
(例: d:/foo/bar のように小文字ドライブ+スラッシュ)。既存エントリを1つ開いて表記を確認してから足す。
// ~/.claude.json に対して: 対象フォルダだけ true にする
const dirs = ['<フォルダ1>', '<フォルダ2>'];
for (const d of dirs) c.projects[d] = { ...(c.projects[d] || {}), hasTrustDialogAccepted: true };
これは安全確認のゲートなので、エージェントの判断で一括承認してはいけない。
- 対象を列挙して「このフォルダを信頼済みにしてよいか」を人に確認し、同意を得た分だけ立てる
- 新規フォルダでは従来どおり確認が出る状態を残す(ゲートごと無効化しない)
- 「手作業ゼロ」を安全機構の解除で達成しない、という原則の適用例
検証: 画面を撮って目視する(これをやらないと直したつもりで終わる)
自動起動と同じ経路で窓を実際に起動し、スクリーンショットを撮って読む。所要20秒、撮影後に窓を閉じるところまで自動化する。
Add-Type -AssemblyName System.Drawing
$t0 = Get-Date
Start-Process cmd.exe -ArgumentList '/c start "" /D "<作業フォルダ>" "<CLIのフルパス>"'
Start-Sleep -Seconds 18
Add-Type -TypeDefinition @'
using System;using System.Runtime.InteropServices;
public class W{
[DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr h);
[DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr h,out R r);
[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr h,int c);
[StructLayout(LayoutKind.Sequential)] public struct R{public int L,T,Rt,B;}}
'@
$p = Get-Process | Where-Object { $_.ProcessName -in @('cmd','WindowsTerminal') -and $_.MainWindowHandle -ne 0 -and $_.StartTime -gt $t0 } | Select-Object -First 1
[W]::ShowWindow($p.MainWindowHandle, 9); [W]::SetForegroundWindow($p.MainWindowHandle); Start-Sleep 2
$r = New-Object W+R; [W]::GetWindowRect($p.MainWindowHandle, [ref]$r)
$bmp = New-Object System.Drawing.Bitmap(($r.Rt-$r.L), ($r.B-$r.T))
[System.Drawing.Graphics]::FromImage($bmp).CopyFromScreen($r.L, $r.T, 0, 0, $bmp.Size)
$bmp.Save('<出力先>\shot.png')
Stop-Process -Id $p.Id -Force
撮った PNG をエージェントに読ませ、入力待ちのプロンプト行まで到達しているかを見る。
効かなかった検証方法(先に潰しておく)
- コンソールバッファ直読み (
FreeConsole→AttachConsole(pid)→CreateFileW("CONOUT$")):CONOUT$が開けず失敗した。 接続先 pid を親子どちらにしても同じ。時間を溶かすので最初からスクショにする。 - 起動時の副作用ファイルを見る: 設定キャッシュ等はプロンプトで止まっていても書かれるため、 「止まっている」と「入力待ちに到達した」を区別できない。セッションログは最初の入力があるまで作られない。
--print/ 非対話モードで試す: TUI を通らないので初回プロンプトの検証にならない。
手順まとめ
~/.claude/settings.jsonにthemeを追加(~/.claude.jsonではない)- 20〜30秒待って読み直し、消えていないことを確認
- 自動起動が使うフォルダを列挙し、人の同意を取って信頼フラグを立てる
- 同じ経路で窓を起動してスクショを撮り、入力待ちまで到達したことを目視
- 撮影用の窓は必ず kill する(放置窓を自分で増やさない)
副次的に見つかること
この調査中に「設定ファイルにモードを書いたのに読むコードが1行も無く、設定が死んでいる」という類のズレが露出しやすい。 自動起動の入口(呼び出し元)を1本 grep して、設定キーが実際に読まれているかも併せて確認しておくと良い。
よくある質問
+「自動起動したCLIエージェントが初回プロンプトで固まる問題を潰す」とは何ですか?
無人で起動した Claude Code 等の TUI が「テーマ選択」「フォルダ信頼」の初回プロンプトで無言のまま止まる問題の恒久対策。theme を settings.json に置く理由(別ファイルに書くと消える)、信頼ゲートを人の同意付きで通す型、スクリーンショットで入力待ち到達まで目視する検証手順、効かない検証方法3つ。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約3.2万トークンかかりますが、この巻物を使えば約3,200トークンで済みます。差し引き約2.9万トークン(API料金換算で約43円)・90%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
Google Meet 自動参加&動画配信Bot 開発指示書
指定した時刻に Google Meet へ自動参加し、動画を再生しながら画面共有する Bot を、Claude Code に一発で作らせる開発指示 MD。朝会の定例動画配信・ウェビナーの自動放送に。
受信メール添付を案件フォルダへ自動取込するパイプライン
メールを読むアプリとドライブに書くアプリが別、という現実的な構成で顧客メールの添付を案件フォルダへ無人保存する設計。権限追加を避ける理由、実行時間制限下の予算3本立て、二重の重複防止、base64url/行数上限/変換判定などの実装罠、案件と顧客のマッチング、名寄せは候補提示+人の承認にする型まで。
Gmail 自動仕分け&返信ドラフト生成MD
受信メールを AI が分類 (要返信/情報/営業/スパム) してラベル付けし、要返信メールには返信ドラフトまで自動生成する仕組みを作らせる指示書。DWD (ドメイン全体委任) 設定手順込み。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア