
こんにちは。よっしーです(^^)
背景
この連載では、Claude Codeの公式ドキュメントを1ページずつ読み解いていきます。公式ドキュメントは情報が網羅されている分、「結局どの機能を、どんな場面で使えばいいのか」は自分で考える必要があり、読むのに意外と時間がかかります。そこで、私が実務で使うために読み込んだ内容を「使う場面→実例コード」の順に整理して残していくことにしました。専門家の解説というより、一次情報を読んだ記録です。推測や動作を確認していない部分には、その都度そう書きます。
1. 一言でいうと何か
このページは、Claude Code をスクリプトや CI から呼び出す——非対話モード(claude -p)の解説です。
これまで第62・67・68・73・74回と5回にわたって「claude -p では〜」と参照されてきた、その本体です。
位置づけが冒頭で整理されています。Agent SDK は、Claude Code を支える同じツール、エージェントループ、およびコンテキスト管理を提供します。スクリプトと CI/CD 用の CLI として、または完全なプログラムによる制御のための Python および TypeScript パッケージとして利用できます。
このページが扱うのは CLI 側だけです。構造化された出力、ツール承認コールバック、およびネイティブメッセージオブジェクトを備えた Python および TypeScript SDK パッケージについては、完全な Agent SDK ドキュメントを参照してください。
やり方は1行。Claude Code を非対話型モードで実行するには、プロンプトと任意の CLI オプションを指定して -p を渡します。
claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"
そして、このページで最も実務に効く概念が**ベアモード(--bare)**です。原文が将来の既定になると予告しています。
--bareはスクリプトおよび SDK 呼び出しの推奨モードであり、将来のリリースで-pのデフォルトになります。
2. どういう場面で役立つか
シーン1:他のコマンドとつなぐ
**非対話モードは stdin を読み込むため、他のコマンドラインツールと同様にデータをパイプして応答をリダイレクトできます。**ビルドログを流し込んで原因を書かせる、といった使い方です。
シーン2:CI で毎回同じ結果を出す
ベアモードの存在理由がこれです。ベアモードは、すべてのマシンで同じ結果が必要な CI とスクリプトに役立ちます。チームメイトの ~/.claude のフック、またはプロジェクトの .mcp.json の MCP サーバーは実行されません。ベアモードはそれらを読み込まないためです。
シーン3:プロジェクト固有のリンターにする
非対話呼び出しをスクリプトでラップして、Claude をプロジェクト固有のリンターまたはレビュアーとして使用できます。
シーン4:結果を機械可読で受け取る
**--output-format json は構造化 JSON、--json-schema を足せば自分の定義したスキーマに従わせられます。**コストも取れます。応答ペイロードに total_cost_usd とモデルごとのコスト内訳が含まれるため、スクリプト呼び出し元は usage dashboard を参照せずに呼び出しごとの支出を追跡できます。
不要・向かないケース
- バックグラウンドやクラウドに投げたい。****Claude Code は
--bgを拒否し、タスク説明付きの--cloudを拒否します。(セッション ID 付きの--cloudは例外で、そのクラウドセッションにメッセージをキューイングして終了します。) - 10MB を超える入力を流したい。****パイプされた stdin は 10MB に制限されています。対処はコンテンツをファイルに書き込み、パイプする代わりにプロンプトでファイルパスを参照すること。
- **ベアモードでサブスクリプションログインを使いたい。**できません。ベアモードでは、Claude Code は OAuth 認証情報またはシステムキーチェーンを読み込みません。
ANTHROPIC_API_KEYかapiKeyHelperが必要です。 - **対話でしか動かないコマンドを使いたい。**ターミナルインターフェースでのみ実行される
/loginなどの組み込みコマンドは利用できません。 - 権限プロンプトに誰かが答えられる前提で組みたい。
-pの既定は厳しめです(後述)。 - **
--permission-promptsを古いバージョンで使いたい。**v2.1.259 以降が必要です。以前のバージョンは不明なオプションエラーで拒否します。
3. コマンドの実例と解説
このページは実質すべてがコマンドです。fenced ブロックは17本あり、いずれも1〜3行の実行例なので、全数を原文どおり引用します。
バージョン差が多いページなので、先に表にまとめます。
| 対象 | 必要バージョン |
|---|---|
--json-schema の検証と format 受け入れ/capabilities 配列//model 等の引数形式 | v2.1.205 以降 |
--forward-subagent-text/Windows の読み取り不可 stdin 修正 | v2.1.211 以降 |
| 終了時のドレイン待機が最大30秒 | v2.1.214 以降 |
ネストしたサブエージェントのメッセージ転送/mcp_server_errors/stderr 警告 | v2.1.219 以降 |
-p 起動時に MCP サーバーの接続を待つ | v2.1.221 以降 |
--resume がマシン上の任意のプロジェクトから ID を探す | v2.1.223 以降 |
apiKeyHelper 拒否時の静かな再試行 | v2.1.246 以降 |
--continue が完了したバックグラウンドセッションを開く | v2.1.257 以降 |
--permission-prompts | v2.1.259 以降 |
api_retry の no_response フィールド | v2.1.261 以降 |
| フォークされたスキルのテキスト転送 | v2.1.265 以降 |
/output-style | v2.1.269 以降 |
基本
claude -p "What does the auth module do?"
終了コードの規約が明記されています。Claude Code は成功時にコード 0 で終了し、実行が失敗した場合は 0 以外のコードで終了するため、スクリプトは終了ステータスで分岐できます。
エラーの出力先が分かれる点は要注意です。無効なフラグを渡すと、Claude Code は実行開始前にエラーを stderr に報告します。実行内での失敗(認証の欠落など)が発生した場合、Claude Code は失敗を stdout の結果として出力します。
「起動前の失敗は stderr、実行中の失敗は stdout」——ここを取り違えると CI で見落とします。
ベアモード
claude --bare -p "Summarize README.md" --allowedTools "Read"
何をスキップするかが列挙されています。--bare を追加して、hooks、skills、カスタムコマンド、サブエージェント、plugins、MCP サーバー、auto memory、および CLAUDE.md の自動検出をスキップすることで、起動時間を短縮します。
逆にこれがない場合、claude -p は対話型セッションと同じコンテキストを読み込みます。これには、作業ディレクトリまたは ~/.claude で設定されたすべてのものが含まれます。
そしてこのページで最も重要な警告がここにあります。
--bareがない場合、-pセッションはプロジェクトの.claude/settings.jsonのフックを実行し、その.mcp.jsonのサーバーを接続します。これは信頼したことのないフォルダでも同様です。-pセッションはワークスペース信頼ダイアログもサーバーごとの承認プロンプトも表示しません。
**対話セッションなら出るはずの信頼ダイアログが、-p では出ない。**他人のリポジトリを CI で claude -p に食わせる構成は、これを知らずに組むと危険です。第63回で扱った信頼ダイアログが、ここでは働きません。
--add-dir には部分的な例外があります。ベアモードはその .claude/skills/ フォルダからスキルを読み込みますが、その .claude/commands/ および .claude/agents/ フォルダはスキップします。
認証も変わります。ベアモードでは、Claude Code は OAuth 認証情報またはシステムキーチェーンを読み込みません。Anthropic API の場合、環境に ANTHROPIC_API_KEY を設定します。あるいは--settings JSON に apiKeyHelper を指定。ただしAmazon Bedrock、Google Cloud の Agent Platform、および Microsoft Foundry は通常のプロバイダー認証情報を読み込み続けます。
ベアモードで**Claude は Bash、ファイル読み取り、およびファイル編集ツールにアクセスできます。**足りないものはフラグで渡します。
| 読み込むもの | 使用するもの |
|---|---|
| システムプロンプト追加 | --append-system-prompt、--append-system-prompt-file |
| 設定 | --settings <file-or-json> |
| MCP サーバー | --mcp-config <file-or-json> |
| カスタムエージェント | --agents <json> |
| プラグイン | --plugin-dir <path>、--plugin-url <url> |
終了時の後始末
-p がいつ終わるかは、走らせたものによって変わります。
バックグラウンド Bash タスク(開発サーバーやウォッチビルドなど)はClaude が最終結果を返し、stdin が閉じられてから約5秒後に終了します。猶予期間により、結果の直後に終了するタスクでも出力を配信できます。
サブエージェントやワークフローは逆です。その結果が最終出力の一部であるため、claude -p は代わりにその作業が完了するまで開いたままになります。
ただし無限には待ちません。デフォルトでは、待機は10分間の継続的なアイドル待機後に終了するため、スタックしたサブエージェントまたはワークフローがプロセスを無期限に開いたままにすることはできません。その時点で Claude Code は実行中のものをすべて停止し、その部分的な結果をドロップします。変えたければCLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS を設定するか、0 に設定して制限なく待機します。
Monitor はウォッチがタイムアウトするか10分の上限がその待機を終了するまで、どちらか先に来た方まで待機し、既定のタイムアウトは5分です。
SIGTERM で止めたとき
Claude Code はコード 143 で終了します。Claude Code は進行中のターンを未完了のままにし、そのための結果を記録しません。
きれいに終わらせたいなら別の手を使います。代わりにターンを終了するには、SIGINT を送信するか、Agent SDK の interrupt() を呼び出してから、プロセスを停止します。
SIGTERM 時の挙動は定義されています。まだ実行中の Bash コマンドのプロセスツリーを終了します。****SessionEnd フックを実行して終了します。そして終了中、Claude Code は新しいツール呼び出しを開始せず、新しいモデルリクエストを送信せず、SessionEnd 以外のフックを実行しません。
救いは1つ。セッションを再開する場合、Claude Code は SIGTERM が未完了のままにしたターンを続行します。
パイプする
cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt
stdin が読めない場合の挙動も改善されています。Claude Code が stdin を読み込めない場合(例えば、それを開始したプロセスが終了した場合)、Claude Code は stderr に警告を出力して、コマンドラインからのプロンプトで続行します。(v2.1.211 より前は Windows でクラッシュか無言終了でした)
ビルドスクリプトに組み込む
{
"scripts": {
"lint:claude": "git diff main | claude -p \"you are a typo linter. for each typo in this diff, report filename:line on one line and the issue on the next. return nothing else.\""
}
}
設計意図が説明されています。diff をパイプすることで、Claude は Bash 権限がなくても読み込むことができ、エスケープされたダブルクォートはスクリプトを Windows に対応させます。
権限を与えずに済ませるためにパイプする——これは応用の効く発想です。
構造化出力
--output-format は3種類。text(デフォルト)/json(結果、セッション ID、メタデータを含む構造化 JSON)/stream-json(リアルタイムストリーミング用の改行区切り JSON)。
claude -p "Summarize this project" --output-format json
スキーマを強制するなら --json-schema を足します。応答には、リクエストに関するメタデータ(セッション ID、使用状況など)が含まれ、構造化出力は structured_output フィールドに入ります。
claude -p "Extract the main function names from auth.py" \
--output-format json \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'
不正なスキーマは**Error: --json-schema is not a valid JSON Schema で終了し、その後にバリデータの診断が続きます。**注意点が1つ。Claude Code は format キーワード(例:"format": "email")を使用するスキーマを受け入れますが、format を注釈として扱い、強制しません。(v2.1.205 より前は無効なスキーマを黙って無視していました)
取り出しは jq で。
# テキスト結果を抽出
claude -p "Summarize this project" --output-format json | jq -r '.result'
# 構造化出力を抽出
claude -p "Extract function names from auth.py" \
--output-format json \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
| jq '.structured_output'
ストリーミング
claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages
**各行は、イベントを表す JSON オブジェクトです。**ストリームの最後の行は、最終応答テキスト、コスト、セッションメタデータを含む result メッセージです。
読み手が遅いときの配慮も入りました。コンシューマーがストリームをゆっくり読む場合、Claude Code はキューに入った出力がドレインされるまで待機し、待機時間をまだキューに入っているもの量に応じてスケーリングし、最大30秒に制限されます。(v2.1.214 より前は約2秒で、大きな応答の終わりが切り取られる可能性がありました。)
テキストだけ抜くなら。
claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \
jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'
-r フラグは生の文字列(引用符なし)を出力し、-j は改行なしで結合するため、トークンは継続的にストリーミングされます。
サブエージェントを追う
ストリームからサブエージェントを識別する方法が定義されています。サブエージェントからのメッセージは、ストリームに assistant および user メッセージとして表示され、その parent_tool_use_id フィールドはサブエージェントを生成したツール呼び出しの ID です。メインの会話からのメッセージは、そのフィールドに null を含みます。
既定ではサブエージェントの tool_use および tool_result ブロックだけが流れます。--forward-subagent-text または CLAUDE_CODE_FORWARD_SUBAGENT_TEXT を使用するとサブエージェントのテキストおよび thinking ブロックも含まれるため、各サブエージェントのトランスクリプトを再構築できます。
入れ子も追えます。サブエージェントが独自のサブエージェントを生成する場合、ネストされたサブエージェントのメッセージは、parent_tool_use_id でそれを生成した Agent ツール呼び出しの ID を含むため、これらの ID をフォローして完全なネストツリーを再構築できます。(v2.1.219 より前は表示されませんでした)
サブエージェントで走るスキルも同じ扱いです。フォークされたスキルの最初のメッセージは、実行を駆動するスキルコンテンツを含む user メッセージです。
API 再試行を捕まえる
API リクエストが再試行可能なエラーで失敗すると、Claude Code は再試行する前に system/api_retry イベントを発行します。
| フィールド | 型 | 説明 |
|---|---|---|
type | "system" | メッセージタイプ |
subtype | "api_retry" | これを再試行イベントとして識別 |
attempt | integer | 現在の試行番号(1 から開始) |
max_retries | integer | このエラーの原因に許可される再試行の合計(セッション全体の予算より少ない場合がある) |
retry_delay_ms | integer | 次の試行までのミリ秒 |
error_status | integer または null | 失敗した試行の HTTP ステータスコード、または HTTP レスポンスを受け取らなかった場合は null |
no_response | object、optional | 応答ヘッダを時間内に受け取れなかった場合のみ存在。waited_ms と retry_wait_ms を含む(v2.1.261 以降) |
error | string | エラーカテゴリ |
uuid | string | 一意のイベント識別子 |
session_id | string | イベントが属するセッション |
error のカテゴリは12種。authentication_failed、oauth_org_not_allowed、account_on_hold、billing_error、rate_limit、overloaded、invalid_request、model_not_found、server_error、max_output_tokens、cloud_credential_error、または unknown。
例外挙動が1つあります。v2.1.246 以降では、401 または 403 が apiKeyHelper 認証情報を拒否する場合、Claude Code は最初の2回の再試行を静かに行い、イベントなしで実行してから、3回目の連続再試行からイベントを通常通り発行します。静かな再試行は依然として attempt にカウントされます。
セッションメタデータと CI ゲート
system/init イベントは、モデル、ツール、MCP サーバー、読み込まれたプラグインを含むセッションメタデータを報告します。スタートアップイベントが先行しない限り、ストリームの最初のイベントです。
先行しうるのは**plugin_install イベントとhook_started、hook_progress、および hook_response イベント**です。
バージョン判定の作法も示されています。イベントは、このバージョンの Claude Code が実装するプロトコル動作を命名する文字列の optional capabilities 配列も含みます。バージョン文字列を比較する代わりに、これを使用して機能を検出し、認識しない値は無視してください。
**CI で「プラグインや MCP が読み込めなかったら落とす」**ことができます。system/init の該当フィールドを見ます。
plugins:正常に読み込まれたプラグイン(各々nameとpathを含む)plugin_errors:プラグイン読み込み時エラー(各々plugin、type、messageを含む)。満たされていない依存関係バージョンと--plugin-dir読み込み失敗(パスの欠落やアーカイブが無効など)を含みます。影響を受けたプラグインは降格され、pluginsから削除されます。エラーがない場合、キーは省略されますmcp_servers:セッション内の MCP サーバー(各々nameとstatusを含む)mcp_server_errors:設定検証によってスキップされた--mcp-configエントリ(各々name、type、messageを含む)。typeはunknown_type、url_missing_type、invalid_config、reserved_nameなど。**認識しない値は汎用スキップとして扱ってください。**エラーがない場合、キーは省略されるため、CI ゲートは空でない配列で失敗できます。
接続の待ち方も定義されています。-p で --mcp-config を渡す場合、Claude Code は最初のターンを実行する前に、まだ保留中のサーバーを待機します(MCP_TIMEOUT スタートアップタイムアウト(デフォルト30秒)まで)。ただしキャッシュされたツールリストを持つリモートサーバーは待機をスキップし、system/init に pending を表示し、最初のツール呼び出しで接続します。
警告の出方に落とし穴があります。**コマンドを手でターミナルで実行する場合、Claude Code は stderr にスタートアップ警告も出力します。**stderr をリダイレクトする場合、または CI ランナーなどのプログラムがそれをキャプチャする場合、Claude Code は警告を出力せず、スキップされたエントリを mcp_server_errors フィールドでのみ報告します。
**CI では警告が出ない。**だからフィールドを見る必要があります。
なお CLAUDE_CODE_SYNC_PLUGIN_INSTALL を設定すると、マーケットプレイスプラグインがインストールされている間、system/plugin_install イベントを発行します。status は**started、installed、failed、completed** の4値で、started と completed は全体的なインストールをブラケットします。installed と failed は個別のマーケットプレイスを報告します。
ツールを自動承認する
claude -p "Run the test suite and fix any failures" \
--allowedTools "Bash,Read,Edit"
-p の既定モードを押さえておく必要があります。****-p の場合、組み込みの開始権限モードはすべてのプランで Manual なので、必要な権限モードを渡します。
第71回で見たとおり、対話セッションでは Pro / Max / Team は Auto 始まりでした。-p は全プラン Manual 始まり——ここが違います。
渡せるモードは3つ。
auto:ほとんどのアクションをあなたの代わりに分類器にレビューさせますdontAsk:それ以外の場合はプロンプトするすべての呼び出しを拒否します。これはロックダウンされた CI 実行に役立ちます。ただしManual モードで承認が不要なアクション(作業ディレクトリでのファイル読み取りや read-only command set)は依然として実行され、--allowedToolsエントリまたはpermissions.allowルールがカバーするアクションも実行されます。例外としてAskUserQuestion、組織がaskに設定したコネクタツール、およびrequiresUserInteractionとマークされた MCP ツールは、許可ルールが一致する場合でも拒否されます。acceptEdits:Claude はプロンプトなしでファイルを書き込み、Claude Code はmkdir、touch、mv、cpなどの一般的なファイルシステムコマンドを自動承認します。
claude -p "Apply the lint fixes" --permission-mode acceptEdits
無人実行でプロンプトを切る
claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none
このフラグの意味が丁寧に説明されています。フラグなしでは、実行は各権限リクエストに対してそのホストを待機します。(ホストとは Agent SDK の canUseTool コールバックや --permission-prompt-tool で渡す MCP ツール)
フラグを使用すると、実行はホストを参照せず、それを待機しません。プロンプトするすべてのものは、PermissionRequest hook が許可しない限り拒否され、Claude には誰も要求を承認できず、再試行しないことが伝えられ、実行は続行されます。
「拒否される」だけでなく「再試行するな」と伝わるのが肝です。無駄なループが起きません。
ツールも削られます。--permission-prompts none を使用すると、Claude Code は AskUserQuestion など、人からの答えが必要なツールを削除するため、Claude はそれらを呼び出すことができません。
結果の確認方法も用意されています。--output-format stream-json を使用すると、拒否は permission_denied システムメッセージとして表示され、最終結果メッセージは permission_denials にそれらをリストします。
コミットを作らせる
claude -p "Look at my staged changes and create an appropriate commit" \
--allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"
見落とすと事故る記法の注意があります。末尾の * はプレフィックスマッチングを有効にするため、Bash(git diff *) は git diff で始まるすべてのコマンドを許可します。スペースは * の前に重要です。なければ、Bash(git diff*) は git diff-index も一致させます。
**スペース1つで許可範囲が変わる。**第62回の権限ルール構文の、実践編です。
コマンドの扱いにも差があります。ユーザーが呼び出した skills とカスタムコマンドは機能します。プロンプト文字列に /skill-name を含めると、Claude Code は実行前にそれを展開します。一方/login などの組み込みコマンドは利用できません。引数を取れるものもあります——/model、/effort、/fast、/color、/rename は値を引数として受け入れます、/config に key=value を渡します(例:/config thinking=false)、/output-style <style>(v2.1.269 以降)。
システムプロンプトを足す
gh pr diff "$1" | claude -p \
--append-system-prompt "You are a security engineer. Review for vulnerabilities." \
--output-format json
--append-system-prompt を使用して、Claude Code のデフォルト動作を保持しながら指示を追加します。丸ごと差し替えたい場合は--system-prompt を使用してデフォルトプロンプトを完全に置き換えるオプションもあります。
会話を続ける
# 最初のリクエスト
claude -p "Review this codebase for performance issues"
# 最新の会話を続ける
claude -p "Now focus on the database queries" --continue
claude -p "Generate a summary of all issues found" --continue
--continue の対象に注意点があります。v2.1.257 以降では、--continue を渡すと、Claude Code は完了したバックグラウンドセッションを開きますが、まだ実行中のセッションは開きません。
並行して複数回している場合はセッション ID を掴みます。
session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')
claude -p "Continue that review" --resume "$session_id"
2つのコマンドを異なるディレクトリから実行できます。Claude Code は ID によってセッションを見つけます。(v2.1.223 より前は同じディレクトリからの実行が必要でした)
第68回では「セッション ID ルックアップは現在のプロジェクトディレクトリとその git worktrees にスコープされている」とありましたが、**このページの記述はマシン上の任意のプロジェクトから引けるとしています。**バージョンによる差なので、自分の環境で確認したほうがよさそうです。
もう1つ、セッション ID の代わりに、--resume にセッションの .jsonl トランスクリプトファイルへの絶対パスを渡すことができます。
4. まとめ + 次回予告
claude -p(--print)で非対話実行。使うのは Claude Code と同じツール・エージェントループ・コンテキスト管理。- **
--bgと、タスク説明付きの--cloudは拒否される。**セッション ID 付き--cloudはメッセージをキューして終了。 - **終了コード0が成功。**起動前の失敗は stderr、実行中の失敗は stdout の結果。
- **
--bareが CI・スクリプトの推奨で、将来の既定。**hooks・skills・カスタムコマンド・サブエージェント・plugins・MCP・auto memory・CLAUDE.md を読まない。 - **
--bareなしの-pは、信頼していないフォルダでもフックを実行し.mcp.jsonに接続する。**信頼ダイアログもサーバー承認プロンプトも出ない。 - ベアモードは OAuth/キーチェーンを読まない。
ANTHROPIC_API_KEYかapiKeyHelperが要る(Bedrock 等は通常どおり)。 - 終了の待ち方は対象で違う。バックグラウンド Bash は約5秒後に終了、サブエージェント/ワークフローは完了まで待つ(アイドル10分で打ち切り、
CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MSで変更)。Monitor は既定5分。 - **SIGTERM はコード143で、進行中のターンを未完了のまま残す。**きれいに終わらせるなら SIGINT か
interrupt()。SessionEndフックだけは走る。 - **stdin は 10MB まで。**超えるならファイルにしてパスを渡す。
- 出力は
text/json/stream-json。--json-schemaで形を強制でき、結果はstructured_output。formatは受け入れられるが強制されない。 --output-format jsonにtotal_cost_usdが入るので呼び出し単位のコストが取れる(ただしクライアント側推定)。- ストリームでは
parent_tool_use_idがサブエージェントの識別子、メインはnull。--forward-subagent-textでテキストと thinking も流れる。 - **
system/initのplugin_errorsとmcp_server_errorsで CI を落とせる。**CI では stderr 警告が出ないので、フィールドを見る。 - バージョン判定は文字列比較ではなく
capabilities配列で。 -pの既定権限モードは全プラン Manual。(対話の Pro/Max/Team は Auto 始まり)必要なら--permission-modeを渡す。ロックダウン CI にはdontAsk。--permission-prompts noneはホストを参照せず、拒否したうえで**「再試行するな」と Claude に伝える。**AskUserQuestion等は削除される。- **
Bash(git diff *)の*前のスペースは必須。**無いとgit diff-indexまで通る。 --continueは完了したバックグラウンドセッションを開くが、実行中のものは開かない。****--resumeは ID かトランスクリプトの絶対パス。
次回予告(暫定):今回その CLI 側を扱った**Agent SDK(agent-sdk/overview)**を取り上げ、Python・TypeScript パッケージからの制御、ツール承認コールバック、ネイティブメッセージオブジェクトを扱う予定です。

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)


コメント