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

公開 更新 著者 永上裕之仕事の自動化
ターミナルの1行からAIに仕事を頼み、結果をファイルで受け取るイメージ

この記事の要点

  • 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つを決めると迷いません。

  1. 何を頼むか:-p "依頼文"、必要ならファイルを流し込む
  2. どう受け取るか:ふつうの文章か、--output-format json でJSONか
  3. 何を許すか:--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)を送ります。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事