Claude Codeをヘッドレス(非対話)で実行する

Claude Code エンジニアリング 6分で読めます

Claude Code は対話UIを立ち上げずに、コマンドとして一度だけ実行することもできます。これがヘッドレス(非対話)モードで、claude -p(print モード)で使います。スクリプトや CI(継続的インテグレーション)、他のプログラムから Claude Code を呼び出したいときに便利です。これは Anthropic 公式の Claude Code に実在する機能です。

ヘッドレスモードとは

通常の claude は対話的なセッションを開き、あなたと往復しながら作業します。これに対しヘッドレスモードは、プロンプトを1回渡して結果を受け取り、そのまま終了する使い方です。人が画面の前にいなくても動くため、定期実行のジョブや自動化パイプライン、他のツールからの呼び出しに向いています。

claude -p でワンショット実行

-p(または --print)フラグにプロンプトを渡すと、対話UIを開かずに一度だけ実行して結果を標準出力に返します。

# プロンプトを1回渡して結果を受け取る
claude -p "READMEの概要を3行に要約して"

# パイプで入力を渡すこともできる
cat error.log | claude -p "このログの原因を推測して"

結果はそのまま標準出力に出るので、リダイレクトで保存したり、別のコマンドに渡したりできます。

出力フォーマットを指定する

プログラムから扱いやすいように、出力形式を --output-format で指定できます。既定はプレーンテキストですが、json を指定すると結果をメタ情報付きの JSON として受け取れ、後段のスクリプトでパースしやすくなります。

# 結果をJSONで受け取る
claude -p "package.jsonのdependenciesを一覧にして" --output-format json

# ストリーミングJSONで逐次受け取る
claude -p "大きめの調査タスク" --output-format stream-json

JSON 出力には応答本文に加えて実行に関する情報が含まれるため、成否の判定やログ記録に使えます。

スクリプトやCIに組み込む

ヘッドレス実行はシェルスクリプトや CI から呼び出せます。例えばプルリクエストの差分に対して要約やチェックを行い、その結果を後続の処理に渡す、といった使い方ができます。

#!/usr/bin/env bash
set -euo pipefail

summary=$(git diff origin/main | claude -p "この差分の要点を箇条書きで")
echo "$summary"

権限プロンプトで止まらないよう、非対話環境では 権限設定 で許可するツールを事前に絞り込んでおくのが実務的です。

注意点とベストプラクティス

関連記事: 設定と権限の管理 / GitHub Actions で使う