claude -pの使い方|Claude Codeをスクリプトで動かす

この記事の要点
- claude -p は、会話の画面を開かずに1回の依頼を実行して結果を出力する「非対話モード」
- ファイルを流し込む・JSONで受け取る・許すツールを先に決める、の3つを組み合わせるとスクリプトに組み込める
- 人が見ていない実行では、--allowedTools や --permission-prompts none で「何を許すか」を先に決めておく
Claude Code は、ふだんは画面の中で会話しながら使います。でも「毎朝のログを要約する」「変更点に誤字がないか確かめる」のような決まった作業は、会話を開かずに1行で頼めたら もっと楽になります。そのための機能が 非対話モード(claude -p) です。
この記事では、公式ドキュメント(2026年10月23日確認)にもとづいて、claude -p の基本と、仕事の自動化に組み込むときの書き方をまとめます。
結論:「頼む・受け取る・許す」の3つを1行に書く
claude -p は、依頼を1回実行して、結果を出力して終わる モードです。スクリプトに組み込むときは、次の3つを決めると迷いません。
- 何を頼むか:
-p "依頼文"、必要ならファイルを流し込む - どう受け取るか:ふつうの文章か、
--output-format jsonでJSONか - 何を許すか:
--allowedToolsや--permission-modeで、確認なしに使ってよい道具を決める
公式ドキュメントでは、この非対話モードを「Agent SDK をコマンドラインから使う形」と位置づけています。Python や TypeScript から細かく制御したい場合は Agent SDK のパッケージを使います。
基本の書き方
いちばん簡単な形は、依頼文を渡すだけです。
claude -p "このプロジェクトの認証まわりは何をしているか説明して"
成功すると終了コード0、失敗すると0以外で終わるので、シェルスクリプトの中で「うまくいったら次へ」と分けられます。
使い方1:ファイルを流し込んで、結果をファイルに出す
claude -p は標準入力を読むので、ほかのコマンドの出力をそのまま渡せます。
cat build-error.txt | claude -p "このビルドエラーの原因を短く説明して" > output.txt
公式の例にある「変更点の誤字チェック」も同じ形です。git diff main の結果を流し込めば、Claude にシェルを使わせなくても中身を読ませられます。なお、流し込める量は 10MBまで です。大きいデータはファイルに書き、パスを依頼文に書きます。
使い方2:JSONで受け取って、ほかの処理につなぐ
結果を別のプログラムで使うなら、--output-format json を付けます。結果の文章は result に入り、会話のIDや費用(total_cost_usd)も一緒に返ってきます。
決まった形で受け取りたいときは、--json-schema で形を指定します。
claude -p "auth.py の主な関数名を抜き出して" \
--output-format json \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'
指定した形の結果は structured_output に入ります。Claude が依頼を断ったときなどはこの欄が無いので、使う前に欄があるか確かめる のが公式のすすめです。
使い方3:確認なしで動かすときは「許す範囲」を先に決める
人が見ていない実行では、確認画面に答える人がいません。そこで、使ってよい道具を先に書きます。
claude -p "テストを実行して、落ちたものを直して" --allowedTools "Bash,Read,Edit"
書き方は権限設定のルールと同じで、Bash(git diff *) のように コマンドの頭だけ許す こともできます。書いていない道具で確認が必要なものは、非対話モードでは断られます。
道具を1つずつ並べる代わりに、--permission-mode で会話全体の基準を決めることもできます。たとえば acceptEdits はファイルの書き込みを確認なしで進め、auto は判定の仕組みが大半の操作を確かめます。定期実行のように誰も答えられないときは、--permission-prompts none を付けると、確認が必要なものは断られたうえで、Claude に「承認できる人はいない」と伝わり、同じ依頼をくり返さずに先へ進みます。権限の考え方は Claude Codeの権限設定入門、auto の仕組みは Claude Codeのオートモードとは? で解説しています。
--bare:どのパソコンでも同じ動きにする
ふつうの claude -p は、対話モードと同じように、そのフォルダや自分の設定にあるフック・スキル・プラグイン・MCPサーバー・CLAUDE.md を読み込みます。人によって結果が変わる のはこのためです。
--bare を付けると、それらを読み込まずに速く起動します。公式ドキュメントでは、スクリプトやCIでの呼び出しには --bare がすすめられていて、今後 -p の既定になる予定とされています。ただし --bare ではサブスクリプションのログインを使わないので、APIキーを環境変数で渡す必要があります。必要な設定は --settings や --mcp-config で明示的に渡します。
業務に組み込むときの例
| 作業 | 組み込み方の例 |
|---|---|
| 毎朝のログの要約 | 前日のログを流し込み、要約を日付つきのファイルに出す |
| 変更点の確認 | git diff を流し込み、誤字や抜けを一覧にさせる |
| 問い合わせの下書き | 届いた文面を流し込み、回答集にそって下書きを作らせる(送るのは人) |
問い合わせ対応の組み立て方は 問い合わせメールの一次返信をAIで下書きする仕組み で紹介しています。パソコンを閉じていても決まった時間に動かしたい場合は、Claude Codeのルーティン も選択肢になります。
よくある質問
前の会話の続きを頼めますか?
--continue で直近の会話を、--resume と会話のIDで特定の会話を続けられます。JSONで受け取ると会話のIDが入っているので、次の実行に渡せます。
途中で止めたいときは?
kill などで止めると、その回の作業は記録されないまま終わります。区切りよく終わらせたいときは、先に割り込み(SIGINT)を送ります。
まとめ
claude -pは、1回の依頼を実行して結果を出す 非対話モード- ファイルを流し込む・JSONで受け取る・許す道具を決める、の組み合わせでスクリプトに入る
- 人が見ていない実行では、許す範囲を先に書く。CIでは
--bareで環境の差をなくす
出典
この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。


