Claude Codeを「対話しながら使うもの」と思っていると、見落としがちな使い方があります。ヘッドレス(非対話)モードです。これを使うと、スクリプトやcronから呼び出して、人が画面を見ていなくても定型タスクを回せます。
- 毎回手で頼んでいる定型作業(要約・整形・チェック)を自動化したい
- cronで定期的に同じ処理を走らせたい
- 結果を別のスクリプトに渡して、パイプラインの一部として使いたい
この記事では、ヘッドレスモードの基本と、定型タスクを自動化する実用パターンをまとめます。
注意: CLIフラグ(
-p、--output-format、--allowedToolsなど)は変わることがあります。本記事は執筆時点(2026年6月)の公式ドキュメントを参照していますが、利用時は手元のclaude --helpや最新ドキュメントで確認してください。自動実行はAPI利用料が発生する点にも注意してください。
基本: -p で非対話モードにする
対話セッションを開かず、一回の指示に対して応答だけ返すのが -p(print)モードです。公式ドキュメントの例です。
claude -p "query"
claude -p "..." と書くと、対話画面に入らず、結果を標準出力に返して終了します。これがスクリプトから呼べる形の基本です。
結果を機械的に扱う: --output-format json
スクリプトの中で結果を使うなら、テキストよりJSONのほうが扱いやすいです。公式ドキュメントの例です。
# スクリプト用に構造化出力を得る
claude -p "List all API endpoints" --output-format json
--output-format には text / json / stream-json が指定できます(執筆時点)。後続の処理で結果をパースしたいときは json、ログにそのまま流したいときは text、逐次受け取りたいときは stream-json、という使い分けです。
権限を先に決めておく: 非対話では確認できない
ヘッドレスモードでは、対話のように「実行していいですか?」と聞いて待つことができません。そのため、何を許可するかを起動時に決めておく必要があります。方法は2つあります。
方法1: 許可するツールを明示する
公式ドキュメントによると、--allowedTools で確認なしに実行できるツールを指定できます。記法は権限ルールと同じです。
# 例: 特定の読み取り系コマンドとReadだけ許可
"Bash(git log *)" "Bash(git diff *)" "Read"
方法2: 権限モードを指定する
公式ドキュメントには、--permission-mode でベースの権限モードを設定する例があります。
claude -p "Apply the lint fixes" --permission-mode acceptEdits
acceptEdits を指定すると、ファイル書き込みや一般的なファイル操作を、個別の --allowedTools 指定なしで通せます。
注意: 自動実行では人間の確認が入りません。許可範囲を広げすぎると、想定外の操作まで通ってしまいます。自動化で許可するのは、その作業に必要な最小限のツールだけにするのが安全です。
実用パターン1: cronで定期実行する
-p モードはcronと相性がよいです。たとえば「毎朝、前日の変更点を要約してファイルに書き出す」をcronに登録するイメージです。
# 擬似例: 毎朝のサマリ生成(実際のパスや権限は環境に合わせる)
claude -p "git log の直近1日分を要約して docs/daily-summary.md に追記して" \
--permission-mode acceptEdits
これをcron(Windowsならタスクスケジューラ)に登録すれば、人が起動しなくても定期的に走ります。実行頻度と内容は、API料金とのバランスで決めてください。
注意: cron実行ではAPIキーの扱いと作業ディレクトリに気をつけてください。キーは環境変数などで安全に渡し、想定したディレクトリで実行されるようパスを明示します。
実用パターン2: 他のスクリプトのパイプラインに組み込む
--output-format json で結果を構造化すれば、後続処理に渡せます。
# 擬似例: 結果をJSONで受け取り、後続のスクリプトで処理する
result=$(claude -p "このログから重大なエラー行だけ抽出してJSONで返して" --output-format json)
# result を別のスクリプトやツールに渡す
「Claudeに判断・整形させて、その結果を既存の処理に流し込む」という、パイプラインの一工程としての使い方です。
自動化を組むときのチェックリスト
人が見ていない状態で動かすぶん、事前の設計が効きます。
| 観点 | 確認すること |
|---|---|
| 権限 | 必要最小限のツールだけ許可しているか(広げすぎていないか) |
| べき等性 | 同じ処理を2回走らせても壊れないか(重複追記・重複作成に注意) |
| 失敗時 | 失敗したときに気づける仕組み(ログ・通知)があるか |
| コスト | 実行頻度 × 1回あたりの消費が、許容できる料金か |
| 検証 | 自動化する前に、手動で -p を1回流して期待どおりか確認したか |
特に**「自動化する前に手動で一度流して確認する」**は外さないでください。非対話で動くということは、間違った指示もそのまま実行されるということです。
まとめ
-
claude -p "..."で非対話(ヘッドレス)モードになり、スクリプトやcronから呼べる -
--output-format jsonで結果を構造化し、後続処理に渡せる - 非対話では確認待ちができないので、
--allowedToolsか--permission-modeで許可を先に決める - 自動化は権限を最小限にし、べき等性・失敗検知・コスト・事前検証を必ず押さえる
まずは**「手元で claude -p を一回流して、期待どおりの結果が返るか」**を確認するところから始め、安定したらcronやパイプラインに載せていくのが安全な順序です。
補足: 自動化に載せる前の土台になる無料リポジトリ
自動で回す処理ほど、CLAUDE.md で前提とルールを固め、進め方を型にしておくと、人が見ていなくても安定します。私が使っているスキルを無料で公開しています。
無料スターター(GitHub・CC BY 4.0):
https://github.com/noguso245-jpg/claude-code-skills-starter
CLAUDE.md設計・計画ファースト開発(PIV)・AIコミット戦略・アジャイルなプロンプト設計の4本のスキルが日本語・英語で入っています。自動化する前に、対話で型を固めておくと、ヘッドレス実行の安定度が上がります。まずは無料リポジトリから試してみてください。
最新のTipsはXでも発信しています: @k___n___t_1125