claude --help を眺めていたら思ったより多くのオプションがあったので、用途別に整理した。それぞれ「どこで使うか」も添える。

セッション管理

会話の継続・再開まわり。地味によく使う。

オプション 説明
-c, --continue カレントディレクトリの直近の会話を継続する
-r, --resume [id] セッションIDを指定して再開。省略するとインタラクティブに選べる
--fork-session --continue / --resume と組み合わせて、再開時に新セッションIDを割り当てる
--from-pr [PR番号/URL] PRに紐づいたセッションを再開する
--session-id <uuid> 使用するセッションIDを明示指定
-n, --name <名前> セッションに名前を付ける(/resume 一覧やターミナルタイトルに表示)
--no-session-persistence セッションをディスクに保存しない(--print 専用)

ユースケース

  • 昨日の作業を朝イチで再開したい → claude -c(カレントディレクトリの直近会話を即続行)
  • 複数の作業を並行していて特定の会話に戻りたい → claude -r(一覧が出るので名前や内容で選べる)
  • 「ここから別ルートを試したい、でも元の会話は残したい」 → --fork-session を付けて再開。元セッションが上書きされない
  • PR レビューの文脈でコードを修正したい → --from-pr <PR番号> でその PR のセッションに戻れる
  • CI で使い捨ての会話を流したい → --no-session-persistence でディスク汚染なし

出力・入力フォーマット

CI パイプラインや他のツールとつなぐときに使う。

オプション 説明
-p, --print 応答を標準出力に吐いて終了。パイプ向け
--output-format <形式> text(デフォルト)/ json(単一結果)/ stream-json(リアルタイムストリーム)
--input-format <形式> text(デフォルト)/ stream-json
--include-partial-messages ストリーム中の部分的なメッセージも出力(--print + stream-json のみ)
--include-hook-events フックのライフサイクルイベントも出力ストリームに含める
--replay-user-messages stdin から受け取ったユーザーメッセージを stdout に再出力
--json-schema <schema> 出力を JSON Schema でバリデーションする

ユースケース

  • シェルスクリプトから結果だけ取り出したい → -p でインタラクティブUIをスキップ
  • 出力を後続の jq で加工したい → --output-format json で構造化されたJSONが取れる
  • チャットUIやダッシュボードにリアルタイムで流したい → --output-format stream-json でトークンが届いた順に出力される
  • 出力が特定のスキーマに従うことを保証したい → --json-schema で型チェックをかける
# 例:レビュー結果を JSON で取り出して jq で整形
claude -p --output-format json "このコードをレビューして" < main.go | jq '.result'

モデル・思考量

オプション 説明
--model <モデル> 使用モデルを指定。エイリアス(sonnet, opus)か完全名(claude-sonnet-4-6)で指定
--effort <レベル> 思考量を low / medium / high / max で指定
--fallback-model <モデル> デフォルトモデルが過負荷のとき自動でフォールバック(--print のみ)
--max-budget-usd <金額> API 呼び出しの上限ドル額(--print のみ)

ユースケース

  • ちょっとした整形タスクをコスト低く流したい → --model haiku --effort low
  • 複雑なリファクタリングや設計相談は考えてほしい → --model opus --effort max
  • 夜間バッチで「過負荷なら別モデルで続けて」としたい → --fallback-model sonnet
  • スクリプトが暴走して予期せず大量トークンを消費するのを防ぎたい → --max-budget-usd 0.50 で上限設定

ツール制御・パーミッション

オプション 説明
--tools <ツール名...> 使用できるツールを明示指定。"" で全無効、default で全許可
--allowed-tools <ツール名...> 許可するツールのリスト
--disallowed-tools <ツール名...> 拒否するツールのリスト
--permission-mode <モード> default / acceptEdits / auto / bypassPermissions / dontAsk / plan
--dangerously-skip-permissions パーミッションチェックを全バイパス。サンドボックス限定推奨
--allow-dangerously-skip-permissions bypassPermissions モードをオプションとして有効化(デフォルトにはしない)
--add-dir <ディレクトリ...> ツールがアクセスできるディレクトリを追加

ユースケース

  • 「読むだけ、ファイルは触らせたくない」 → --tools "Read,Grep" で Bash と Edit を除外
  • CI で全自動実行させたい → --permission-mode auto(確認ダイアログなし)
  • 本番環境に繋がったサンドボックスで自動実行 → --dangerously-skip-permissions(ネットワーク分離前提)
  • まず計画だけ出してもらってレビューしたい → --permission-mode plan(編集を実行しない)
  • リポジトリ外の共有ライブラリも読ませたい → --add-dir /path/to/shared-lib

--permission-mode の選択肢は重要なので整理しておく:

モード 動作
default 通常の確認あり
acceptEdits ファイル編集は自動許可、Bash は確認
auto ほぼ全自動
dontAsk 確認を求めない
bypassPermissions チェックを完全スキップ
plan 実行せず計画のみ提示

エージェント・プロンプト

オプション 説明
--agent <エージェント> 使用するエージェントを指定(設定の agent を上書き)
--agents <JSON> カスタムエージェントを JSON で定義
--system-prompt <テキスト> セッションのシステムプロンプトを指定
--append-system-prompt <テキスト> デフォルトのシステムプロンプトに追記
--disable-slash-commands スキル(スラッシュコマンド)を無効化

ユースケース

  • プロジェクトごとに役割を固定したい → --system-prompt "あなたはGoの専門家です" をシェルエイリアスに仕込む
  • デフォルトの振る舞いは維持しつつ制約を追加したい → --append-system-prompt "日本語で答えてください" で上書きではなく追記
  • 設定ファイルなしで即席レビュアーを作りたい → --agents '{"reviewer": {"description": "レビュアー", "prompt": "厳しくレビューしてください"}}'
  • スキルを無効にしてシンプルに使いたい → --disable-slash-commands
# エイリアス例:Go 専用セッション
alias claude-go='claude --append-system-prompt "Go のベストプラクティスに従って答えてください。型安全性を重視してください。"'

MCP(Model Context Protocol)

オプション 説明
--mcp-config <ファイル/JSON...> MCP サーバーを JSON ファイルまたは文字列で読み込む
--strict-mcp-config --mcp-config で指定したサーバーのみ使用し、他の MCP 設定を無視

ユースケース

  • 特定のプロジェクトだけ Notion にアクセスさせたい → --mcp-config ./notion-mcp.json でセッション限定ロード
  • CI など環境依存の MCP 設定を使いたい → JSON 文字列を直接渡す(設定ファイル不要)
  • 本番と開発で MCP を切り替えたい → --strict-mcp-config でユーザー設定の MCP を無視し、渡した設定だけ使う

IDE・ワークツリー

オプション 説明
--ide 起動時に有効な IDE に自動接続
-w, --worktree [名前] 新しい git worktree を作成してセッションを実行
--tmux worktree 用の tmux セッションを作成(--worktree と組み合わせる)
--chrome Chrome 統合を有効化
--no-chrome Chrome 統合を無効化

ユースケース

  • 現在の作業を汚さずに実験的なリファクタリングを試したい → -w experiment で隔離したワークツリーを作成
  • ターミナルを分割して IDE と並行で作業したい → --tmux でペインを自動作成
  • フロントエンド開発で DOM にアクセスさせたい → --chrome で Chrome と連携
# 例:feature/new-api という worktree を tmux で開く
claude -w feature/new-api --tmux

デバッグ・設定

オプション 説明
-d, --debug [filter] デバッグモード。カテゴリ絞り込み可(例: "api,hooks""!file"
--debug-file <パス> デバッグログをファイルに書き出す
--verbose 設定の verbose を上書き
--settings <ファイル/JSON> 追加設定を JSON ファイルまたは文字列で読み込む
--setting-sources <ソース> ロードする設定ソースを指定(user, project, local
--plugin-dir <パス> このセッション限定でプラグインをディレクトリから読み込む
--betas <ベータ機能...> APIリクエストにベータヘッダを付与(APIキーユーザーのみ)
--file <spec...> 起動時にファイルリソースをダウンロード。形式: file_id:相対パス

ユースケース

  • フックが動かない原因を調べたい → -d hooks でフック関連ログだけ絞って表示
  • API 通信のトラブルシュートをしたい → -d api --debug-file /tmp/claude.log でファイルに保存して後から確認
  • 本番とは別の設定で試したい → --settings ./dev-settings.json でファイル指定
  • ユーザー設定を無視してプロジェクト設定だけで動かしたい → --setting-sources project,local

--bare モードとは

最小限モード。フック・LSP・プラグイン同期・自動メモリ・バックグラウンド処理・キーチェーン読み込み・CLAUDE.md の自動探索をすべてスキップする。環境変数 CLAUDE_CODE_SIMPLE=1 が立つ。

ユースケース

  • Docker コンテナで使い捨てに実行したい → --bare で副作用ゼロの最小構成
  • CI パイプラインに埋め込みたい → --bare + ANTHROPIC_API_KEY 環境変数だけで動く
  • 起動が遅い・重い感じがする → --bare でプラグイン同期などを全スキップして高速化
  • 明示的なコンテキストだけ与えたい → --bare --system-prompt-file ./context.md --add-dir ./src
# CI での典型的な使い方
ANTHROPIC_API_KEY=$SECRET claude --bare -p \
  --output-format json \
  --max-budget-usd 0.10 \
  "このPRの変更点を要約してください"

サブコマンド

オプションではないがまとめておく。

コマンド 説明
agents 設定済みのエージェント一覧
auth 認証管理
auto-mode auto モード分類器の設定を確認
doctor 自動アップデーターのヘルスチェック
install [target] ネイティブビルドのインストール(stable / latest / バージョン指定)
mcp MCP サーバーの設定・管理
plugin / plugins プラグイン管理
setup-token 長期認証トークンのセットアップ(Claude サブスクリプション必要)
update / upgrade アップデート確認・インストール

こうして整理すると、実用上の肝は セッション管理パイプライン向け出力制御パーミッションモード の3系統だとわかる。特に --permission-mode--bare--max-budget-usd はスクリプト組み込みで効いてくるオプションで、これを知っているかどうかで自動化の設計が変わってくる。