Claude Codeには、1回だけ応答して終了する「printモード」があります。対話モードが”会話”だとすれば、printモードは”コマンド”。シェルスクリプトやパイプラインに組み込むことで、AIを自動化ワークフローの一部として活用できます。
この記事では、printモードの基本的な使い方から、パイプによる入力連携、スクリプトへの組み込みまでを解説します。CI/CDやバッチ処理にClaude Codeを活用したい方は、ここが出発点です。
printモードとは
printモードは、-p(または --print)オプションを付けて実行するモードです。指示を1回渡すと、応答を標準出力に出力して即座に終了します。
claude -p "指示内容"
対話モードのようにプロンプトが表示されることはなく、結果だけが出力されます。
printモードの基本的な使い方
サンプルプロジェクトを使って試してみましょう。以下のファイルが ~/readme-pipeline-demo に存在する前提です。
"""シンプルな計算ユーティリティ"""
def add(a: int, b: int) -> int:
"""2つの数値を加算する"""
return a + b
def multiply(a: int, b: int) -> int:
"""2つの数値を乗算する"""
return a * b
if __name__ == "__main__":
print(f"3 + 5 = {add(3, 5)}")
print(f"3 * 5 = {multiply(3, 5)}")
ファイルの作り方についてわからない人は、【Claude Code】対話モード完全ガイド|README生成からファイル編集まで を参考にしてください。
次に、このディレクトリで以下を実行します。
cd ~/readme-pipeline-demo
claude -p "このリポジトリのmain.pyの内容を解析して、概要を1段落で説明してください"
期待される出力:

結果は標準出力に出力されるため、リダイレクトでファイルに保存できます。
claude -p "main.pyの概要を1行で" > summary.txt
cat summary.txt

printモードでファイルを編集する
printモードでもファイルの編集は可能です。
claude -p "main.pyにsubtract関数を追加してください"
このコマンドを実行すると、ファイルへの書き込み権限を求められます。
ファイルへの書き込み権限が必要です。権限を許可していただけますか?
デフォルトのprintモードでは権限の確認が入るため、そのままでは自動実行できません。権限の確認をスキップして即実行するには、--allowedTools`オプションでツールの使用を許可します。
claude -p "main.pyにsubtract関数を追加してください" --allowedTools "Edit,Write"
--allowedToolsに Edit(ファイル編集)や Write(ファイル作成)を指定すると、確認なしで実行されます。スクリプトやCI/CDに組み込む場合に便利です。

printモードでは会話を続けることができないため、追加の修正指示を出したい場合はもう一度コマンドを実行する必要があります。
対話モードとの使い分け
同じ指示でも、モードによって動作が異なります。
| 観点 | 対話モード | printモード |
|---|---|---|
| 会話の継続 | 可能 | 不可(1回で終了) |
| ファイル編集 | 確認あり | 即実行 |
| スクリプト連携 | 不向き | 最適 |
| 標準入出力 | 利用しない | 利用可能 |
使い分けの目安:
- じっくり開発を進めたい → 対話モード
- 自動化・パイプライン・バッチ処理 → printモード
注意点: printモードで複雑なマルチステップの作業を1回で指示しようとすると、途中で切れたり不完全な結果になることがあります。複雑な作業は対話モードを使うか、printモードで段階的に分割して実行しましょう。
パイプによる入力
printモードの最大の強みは、標準入力からの入力を受け付けることです。これにより、他のコマンドの出力をClaudeに渡して処理させることができます。
cat main.py | claude -p "このコードのdocstringを英語に翻訳して、全体を出力してください"
期待される出力:
"""Simple calculation utility"""
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
def multiply(a: int, b: int) -> int:
"""Multiply two numbers"""
return a * b
if __name__ == "__main__":
print(f"3 + 5 = {add(3, 5)}")
print(f"3 * 5 = {multiply(3, 5)}")
この「パイプで入力 → Claudeで処理 → 標準出力」のパターンが、あらゆる自動化の基本形になります。
スクリプト連携の実践例
パイプとリダイレクトを組み合わせれば、さまざまな自動化が可能です。
README自動生成ワンライナー
claude -p "このリポジトリのREADME.mdを生成してください" > README.md
ディレクトリ構成の説明文を生成
ls -la | claude -p "このディレクトリ構成を説明してください"
Gitの差分を要約
git diff | claude -p "この差分の内容を日本語で要約してください"
いずれも「コマンドの出力をパイプでClaudeに渡し、結果を活用する」という同じパターンです。このパターンを覚えておけば、CI/CDパイプラインやシェルスクリプトへの組み込みもスムーズに進められます。
次に試してみよう
ls -la | claude -p "このディレクトリ構成を説明して"を自分のプロジェクトで実行してみましょうgit log --oneline -10 | claude -p "最近のコミット履歴を要約して"でGitログの要約を試してみましょう
まとめ
- printモード(
claude -p)は1回だけ応答して終了する、自動化向けのモード - 結果は標準出力に出力されるため、リダイレクトやパイプで他のツールと連携できる
- パイプで他のコマンドの出力をClaudeに渡す「パイプ入力 → Claude処理 → 標準出力」が基本パターン
- 複雑な作業は分割して実行するか、対話モードを使う
さらに深く学びたい方へ
Claude Codeの Skills・MCP・Agent・Hooks・Plugin を体系的に学べる有料教材を Zenn で公開しています。
Claude Code 実践ガイド(Zenn Book)






