Claude Code設定ガイド — settings.jsonの主要フィールド・環境変数・実戦レシピ
Claude Codeの設定フィールド・環境変数・CLIフラグをコード例とともに整理。10の実戦レシピ・3シナリオのプリセットJSON・優先順位フローチャートまで扱います。
要点
Claude Codeの設定は、5階層のsettings.json・~/.claude.jsonのグローバル設定・環境変数・CLIフラグ・CLAUDE.mdメモリという多層構造で構成されていて、公式docsが列挙するsettings.jsonフィールドだけで80種以上、環境変数は90種以上あります。Managed/User/Project/Local/CLIの優先順位フローチャート、主要フィールド・主要環境変数のコード例付き対応表、hooks/mcpServers/permissions/sandbox/statusLine/outputStyleの詳解、動くコード10本の実戦レシピ、個人/チーム/エンタープライズの即貼付可能なプリセットJSON、トラブルシューティング早見表までを扱います。
設定の5階層と優先順位
スコープの全体像
Claude Codeは「誰と共有するか」「どこに書くか」でManaged / User / Project / Local / CLIの5階層に整理されています。
- Managed —
managed-settings.json・MDM・レジストリ・サーバー配信経由。マシン上の全ユーザーに強制され、個人設定やCLIフラグでも上書き不可 - User —
~/.claude/settings.json。自分の全プロジェクトに適用 - Project —
<repo>/.claude/settings.json。リポジトリにcommitしてチーム共有 - Local —
<repo>/.claude/settings.local.json。自分+そのリポジトリのみ(.gitignore推奨) - CLIフラグ / 環境変数 — 起動ごとの一時オーバーライド
優先順位フローチャート
Managed 設定(remote / plist / レジストリ / ファイル)
▼ 覆せない
コマンドライン引数(--model, --permission-mode 等)
▼
ローカルプロジェクト設定 (.claude/settings.local.json)
▼
共有プロジェクト設定 (.claude/settings.json)
▼
ユーザー設定 (~/.claude/settings.json)
▼
組み込みデフォルトManagedティア内ではさらに サーバー管理 > MDM/OSレベル > ファイルベース(managed-settings.d/*.json + managed-settings.json) > HKCUレジストリ の順で1つだけが採用されます(マージではなく選択)。
実例:「どれが効くか」
- User設定で
"model": "claude-sonnet-4-6" - Project設定で
"model": "claude-opus-4-6" - CLIで
--model haiku
Managed層が無ければ最終モデルはhaikuになります。CLIがProjectより強く、ProjectがUserより強い、という順序が理解できていれば迷いません。
配列設定はスコープ間でマージされる
配列型の設定(permissions.allow・sandbox.filesystem.allowWrite・claudeMdExcludes・allowedHttpHookUrls等)は全スコープで連結+重複排除されます。Managedが["/opt/company-tools"]を置き、ユーザーが["~/.kube"]を追加した場合、最終構成には両方が含まれます。上書きではなく追加である点は、Managedで絶対に許したくない挙動をpermissions.denyに置くときに重要です(allowを絞ってもユーザーが追加で広げられるため)。
managed-settings.d/ドロップインディレクトリ
ファイルベースのManaged設定ではmanaged-settings.d/*.jsonがサポートされていて、systemd規則に従いmanaged-settings.json→ドロップイン各ファイル(アルファベット順)の順にディープマージされます。10-telemetry.json・20-security.jsonのように数値プレフィックスでマージ順を制御するのが実務パターンです。
アクティブな設定の確認
Claude Code内で/statusを実行すると、Enterprise managed settings (remote) / (plist) / (HKLM) / (file)などどのManagedソースが効いているかまで表示されます。設定ファイルにJSONエラーがあっても/statusで検出できるので、「効かない」ときの最初のデバッグはここです。
settings.jsonの主要フィールド一覧
settings.jsonは階層設定の中心ファイルです。冒頭に$schemaを書くとVS Code/Cursorなどで補完とバリデーションが効きます。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "claude-sonnet-4-6",
"permissions": {
"allow": ["Bash(npm run lint)", "Read(~/.zshrc)"],
"deny": ["Bash(curl *)", "Read(./.env*)", "Read(./secrets/**)"]
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1"
}
}全スコープで有効なフィールド一覧
公式docsに掲載されている標準フィールドを用途別に並べると次の通りです。
| フィールド | 用途 |
|---|---|
agent | 用途メインスレッドを名前付きsubagentとして起動し、そのシステムプロンプト・ツール制限・モデルを適用 |
alwaysThinkingEnabled | 用途全セッションで拡張思考をデフォルト有効化 |
apiKeyHelper | 用途/bin/shで実行され認証値を生成するカスタムスクリプト。戻り値はX-Api-KeyとAuthorization: Bearerに送信 |
attribution | 用途git commit/PRの属性をcommit/prで個別指定。空文字列で非表示 |
autoMemoryDirectory | 用途自動メモリの保存先ディレクトリ(~/展開可)。プロジェクト設定からは受け付けない |
autoMemoryEnabled | 用途自動メモリのON/OFF。デフォルトtrue |
autoMode | 用途auto mode分類器のenvironment/allow/soft_denyを散文で指定 |
autoUpdatesChannel | 用途更新チャネル。"stable"(約1週間古い)/"latest"(デフォルト) |
availableModels | 用途/model/--model/ANTHROPIC_MODELで選べるモデルを制限 |
awaySummaryEnabled | 用途離席後のセッション要約表示。CLAUDE_CODE_ENABLE_AWAY_SUMMARYと同義 |
awsAuthRefresh / awsCredentialExport | 用途Bedrock認証情報を更新/出力するスクリプト |
claudeMdExcludes | 用途祖先CLAUDE.mdのうち読み込みをスキップするグロブパターン(配列マージ) |
cleanupPeriodDays | 用途非アクティブセッションを削除する日数。デフォルト30、最小1 |
companyAnnouncements | 用途起動時に表示するアナウンス(複数指定でランダム表示) |
defaultShell | 用途!コマンドのシェル。"bash"または"powershell" |
disableAllHooks | 用途全hooksとカスタムstatuslineを無効化 |
disableAutoMode | 用途"disable"でauto modeを無効にし、Shift+Tabサイクルからも除外 |
disableDeepLinkRegistration | 用途claude-cli://プロトコルハンドラー登録を無効化 |
disabledMcpjsonServers / enabledMcpjsonServers | 用途.mcp.jsonからの拒否リスト/承認リスト |
disableSkillShellExecution | 用途skills/commandsのインラインシェル実行(!`...`)を無効化 |
effortLevel | 用途"low"/"medium"/"high"/"xhigh"を永続化 |
enableAllProjectMcpServers | 用途.mcp.jsonの全MCPサーバーを自動承認 |
enabledPlugins | 用途plugin-name@marketplace-name単位での有効化マップ |
env | 用途全セッションに適用する環境変数のマップ |
extraKnownMarketplaces | 用途追加のプラグインマーケットプレイスの定義 |
fastModePerSessionOptIn | 用途高速モードをセッションごとに/fastで明示的に有効化させる |
feedbackSurveyRate | 用途セッション品質調査の表示確率(0〜1)。0で抑制 |
fileSuggestion | 用途@補完用のカスタムコマンド(JSON入出力) |
forceLoginMethod | 用途"claudeai"/"console"でログイン経路を制限 |
forceLoginOrgUUID | 用途特定組織のUUIDに所属することを要求 |
hooks | 用途ライフサイクルイベントでのフック実行定義 |
includeCoAuthoredBy | 用途非推奨。attributionを利用 |
includeGitInstructions | 用途組み込みのgitワークフロー命令を含めるか。デフォルトtrue |
language | 用途Claudeの応答言語(例: "japanese") |
minimumVersion | 用途自動更新のフロア("2.1.100"等) |
model | 用途デフォルトモデル("claude-sonnet-4-6"等) |
modelOverrides | 用途モデルIDをプロバイダー固有ID(Bedrock ARN等)にマップ |
otelHeadersHelper | 用途OpenTelemetryヘッダー生成スクリプト |
outputStyle | 用途出力スタイル("Explanatory"等) |
permissions | 用途allow/ask/deny/additionalDirectories/defaultMode/disableBypassPermissionsMode/skipDangerousModePermissionPrompt |
plansDirectory | 用途プランファイル保存先。デフォルト~/.claude/plans |
prefersReducedMotion | 用途UIアニメーション(スピナー・シマー等)の削減 |
respectGitignore | 用途@ファイルピッカーが.gitignoreを尊重するか |
sandbox | 用途Bashサンドボックスの設定ブロック(詳細は後述) |
showClearContextOnPlanAccept | 用途プラン受諾画面にコンテキストクリアを表示 |
showThinkingSummaries | 用途拡張思考サマリーの表示 |
skipWebFetchPreflight | 用途WebFetchのドメイン安全チェックをスキップ |
spinnerTipsEnabled / spinnerTipsOverride / spinnerVerbs | 用途スピナー表示のカスタマイズ |
sshConfigs | 用途Desktop環境ドロップダウンのSSH接続一覧 |
statusLine | 用途ステータスライン生成コマンド |
subagentStatusLine | 用途サブエージェントパネル行の生成コマンド |
tui | 用途ターミナルUIレンダラー。"fullscreen"/"default" |
useAutoModeDuringPlan | 用途プランモードでauto modeセマンティクスを使用するか |
viewMode | 用途起動時のトランスクリプトビュー。"default"/"verbose"/"focus" |
voiceEnabled | 用途プッシュトゥトーク音声ディクテーションの有効化 |
worktree.symlinkDirectories / worktree.sparsePaths | 用途worktreeのディスク使用量最適化 |
Managed設定のみ有効なフィールド
以下はmanaged-settings.jsonに書いた場合だけ効力を持ち、ユーザー/プロジェクト層では無視されます。組織のハード境界を引く役割です。
| フィールド | 用途 |
|---|---|
allowedChannelPlugins | 用途メッセージをプッシュできるチャネルプラグインのホワイトリスト |
allowedHttpHookUrls | 用途HTTP hooksの宛先URLホワイトリスト(*ワイルドカード) |
allowedMcpServers | 用途設定可能なMCPサーバーのホワイトリスト |
allowManagedHooksOnly | 用途managed/SDK/enabledPlugins由来のhooksのみ許可 |
allowManagedMcpServersOnly | 用途managed設定のallowedMcpServersのみ尊重 |
allowManagedPermissionRulesOnly | 用途ユーザー/プロジェクト設定での権限ルール定義を禁止 |
blockedMarketplaces | 用途マーケットプレイスのブロックリスト |
channelsEnabled | 用途Team/Enterpriseでチャネルを許可 |
deniedMcpServers | 用途明示的にブロックされるMCPサーバーの拒否リスト |
forceRemoteSettingsRefresh | 用途リモート設定取得成功まで起動をブロック(fail-closed) |
httpHookAllowedEnvVars | 用途HTTP hooksがヘッダーに補間できる環境変数名 |
pluginTrustMessage | 用途プラグイン信頼警告への追加メッセージ |
sandbox.filesystem.allowManagedReadPathsOnly | 用途allowReadパスをmanaged設定だけに限定 |
sandbox.network.allowManagedDomainsOnly | 用途許可ドメインをmanaged設定だけに限定 |
strictKnownMarketplaces | 用途ユーザーが追加可能なマーケットプレイスのホワイトリスト |
グローバル設定(~/.claude.json)
settings.jsonではなく~/.claude.jsonにしか保存できない項目群。ここに書くべき設定をsettings.jsonに入れるとスキーマエラーになります。
| フィールド | 用途 |
|---|---|
autoConnectIde | 用途外部ターミナル起動時に実行中のIDEへ自動接続 |
autoInstallIdeExtension | 用途VS CodeターミナルでIDE拡張を自動インストール |
autoScrollEnabled | 用途フルスクリーンで新出力に自動追従 |
editorMode | 用途"normal"/"vim" |
externalEditorContext | 用途Ctrl+Gで外部エディターに前応答を渡す |
showTurnDuration | 用途ターン時間表示(例:「Cooked for 1m 6s」) |
terminalProgressBarEnabled | 用途ターミナル進捗バー(ConEmu/Ghostty/iTerm2) |
teammateMode | 用途エージェントチームの表示モード(auto/in-process/tmux) |
MCP設定のローカル/ユーザースコープも~/.claude.jsonに保存されます(プロジェクトスコープは.mcp.json)。
個別フィールドの代表例
長大なフィールド群の中でも特に誤用が多いものを掘り下げます。
apiKeyHelper — スクリプトでAPIキーを動的発行
{
"apiKeyHelper": "~/.config/claude/get-api-key.sh",
"env": {
"CLAUDE_CODE_API_KEY_HELPER_TTL_MS": "1800000"
}
}#!/bin/bash
# 1Password CLI から取得する例
op read "op://Private/Anthropic API/credential"戻り値はX-Api-KeyヘッダーおよびAuthorization: Bearerヘッダーとして送信されます。TTLを指定すると指定間隔で再取得されるので、短命トークン運用に向きます。
attribution — コミット/PRの署名カスタマイズ
{
"attribution": {
"commit": "",
"pr": ""
}
}両方を空文字列にするとClaudeの署名を完全に非表示にできます。組織ポリシーで「AIアシスト明示」が必要な場合はcommit: "Generated with AI assistance"のようにカスタマイズします。
availableModels — モデル選択の制限
{
"availableModels": ["sonnet", "haiku"]
}Opusの意図しない利用を抑えたい、プロジェクトごとにモデル方針を固定したい、といったケースに使えます。/model・--model・ANTHROPIC_MODELいずれからもリストの外は選べなくなります。
claudeMdExcludes — モノレポでのCLAUDE.md除外
{
"claudeMdExcludes": [
"**/monorepo/CLAUDE.md",
"/Users/me/monorepo/other-team/.claude/rules/**"
]
}他チームのCLAUDE.mdがツリー上で取得されるときに役立ちます。配列はスコープ間でマージされます。
環境変数の全一覧
環境変数は秘匿情報・その場限りの切り替え・CI/コンテナでの注入に向きます。settings.jsonのenvキーで宣言すると全セッションに配布できます(Managedで固定も可能)。
認証・エンドポイント
| 変数 | 用途 |
|---|---|
ANTHROPIC_API_KEY | 用途X-Api-Key。非対話(-p)では常に優先、対話モードは初回承認 |
ANTHROPIC_AUTH_TOKEN | 用途カスタムBearerトークン |
ANTHROPIC_BASE_URL | 用途APIエンドポイントを上書き(プロキシ/ゲートウェイ) |
ANTHROPIC_BEDROCK_BASE_URL / ANTHROPIC_BEDROCK_MANTLE_BASE_URL | 用途Bedrock/Mantleの基底URL |
ANTHROPIC_VERTEX_BASE_URL / ANTHROPIC_VERTEX_PROJECT_ID | 用途Vertex AIの基底URL/GCPプロジェクト |
ANTHROPIC_FOUNDRY_API_KEY / ANTHROPIC_FOUNDRY_BASE_URL / ANTHROPIC_FOUNDRY_RESOURCE | 用途Microsoft Foundry認証 |
ANTHROPIC_BETAS | 用途追加のanthropic-betaヘッダー(カンマ区切り) |
ANTHROPIC_CUSTOM_HEADERS | 用途Name: Value形式のカスタムヘッダー |
AWS_BEARER_TOKEN_BEDROCK | 用途BedrockのAPIキー認証 |
API_TIMEOUT_MS | 用途APIリクエストのタイムアウト(デフォルト600000/10分) |
CLAUDE_CODE_OAUTH_TOKEN | 用途Claude.ai認証用OAuthアクセストークン |
CLAUDE_CODE_OAUTH_REFRESH_TOKEN / CLAUDE_CODE_OAUTH_SCOPES | 用途自動化環境用のリフレッシュトークンとスコープ |
CLAUDE_CODE_CERT_STORE | 用途TLSのCA証明書ソース(bundled,systemデフォルト) |
CLAUDE_CODE_CLIENT_CERT / CLAUDE_CODE_CLIENT_KEY / CLAUDE_CODE_CLIENT_KEY_PASSPHRASE | 用途mTLS認証 |
CLAUDE_CODE_PROXY_RESOLVES_HOSTS | 用途プロキシ側でDNS解決させる |
HTTP_PROXY / HTTPS_PROXY / NO_PROXY | 用途標準プロキシ変数 |
モデル選択
| 変数 | 用途 |
|---|---|
ANTHROPIC_MODEL | 用途使用モデル名 |
ANTHROPIC_SMALL_FAST_MODEL | 用途[非推奨]バックグラウンドタスク用Haiku |
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION | 用途Bedrock時のHaikuリージョン上書き |
ANTHROPIC_DEFAULT_HAIKU_MODEL / _OPUS_MODEL / _SONNET_MODEL | 用途既定モデルエイリアスの上書き |
ANTHROPIC_DEFAULT_*_MODEL_NAME / _DESCRIPTION / _SUPPORTED_CAPABILITIES | 用途ピッカーの表示カスタマイズ |
ANTHROPIC_CUSTOM_MODEL_OPTION / _NAME / _DESCRIPTION / _SUPPORTED_CAPABILITIES | 用途カスタムモデルエントリを/modelに追加 |
CLAUDE_CODE_USE_BEDROCK / CLAUDE_CODE_USE_VERTEX / CLAUDE_CODE_USE_FOUNDRY / CLAUDE_CODE_USE_MANTLE | 用途プロバイダー切り替え |
CLAUDE_CODE_SKIP_BEDROCK_AUTH / CLAUDE_CODE_SKIP_VERTEX_AUTH / CLAUDE_CODE_SKIP_FOUNDRY_AUTH / CLAUDE_CODE_SKIP_MANTLE_AUTH | 用途LLMゲートウェイ経由で自前認証を使う場合 |
CLAUDE_CODE_SUBAGENT_MODEL | 用途subagent用モデル上書き |
CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP | 用途旧Opus(4.0/4.1)→現行リマップを抑制 |
VERTEX_REGION_CLAUDE_3_5_HAIKU / _3_5_SONNET / _3_7_SONNET / _4_0_OPUS / _4_0_SONNET / _4_1_OPUS / _4_5_OPUS / _4_5_SONNET / _4_6_OPUS / _4_6_SONNET / _4_7_OPUS / _HAIKU_4_5 | 用途Vertex AIでのモデル別リージョン |
ツール実行・Bash
| 変数 | 用途 |
|---|---|
BASH_DEFAULT_TIMEOUT_MS | 用途Bashのデフォルトタイムアウト(デフォルト120000) |
BASH_MAX_TIMEOUT_MS | 用途Bashの最大タイムアウト(デフォルト600000) |
BASH_MAX_OUTPUT_LENGTH | 用途Bash出力を中央で切り詰める文字数 |
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR | 用途Bash/PowerShellコマンド後に元のcwdに戻す |
CLAUDE_CODE_SHELL | 用途自動シェル検出の上書き |
CLAUDE_CODE_SHELL_PREFIX | 用途全Bashコマンドをラップするプレフィックス(ログ/監査用) |
CLAUDE_CODE_USE_POWERSHELL_TOOL | 用途Windows/PowerShellツールの制御 |
CLAUDE_CODE_GIT_BASH_PATH | 用途Windowsでbash.exeの明示パス |
USE_BUILTIN_RIPGREP | 用途0でシステムrgを使用 |
CLAUDE_CODE_GLOB_HIDDEN / CLAUDE_CODE_GLOB_NO_IGNORE / CLAUDE_CODE_GLOB_TIMEOUT_SECONDS | 用途Globツール挙動 |
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS | 用途ファイル読み取りのトークン制限 |
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY | 用途並列ツール/subagent数(デフォルト10) |
TASK_MAX_OUTPUT_LENGTH | 用途subagent出力の最大文字数(デフォルト32000) |
コンテキスト・思考予算・出力
| 変数 | 用途 |
|---|---|
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 用途1応答あたりの最大出力トークン |
MAX_THINKING_TOKENS | 用途拡張思考の予算上限。0で無効化 |
CLAUDE_CODE_DISABLE_THINKING | 用途思考を強制無効化 |
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING | 用途適応的推論を無効化しMAX_THINKING_TOKENSにフォールバック |
CLAUDE_CODE_EFFORT_LEVEL | 用途努力レベル(low/medium/high/xhigh/max/auto) |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | 用途コンテキストウィンドウサイズの上書き(DISABLE_COMPACT必須) |
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE | 用途オートコンパクションの閾値(%) |
CLAUDE_CODE_AUTO_COMPACT_WINDOW | 用途コンパクション計算のトークン基準 |
DISABLE_AUTO_COMPACT | 用途自動コンパクションのみ無効化 |
DISABLE_COMPACT | 用途自動+手動/compactを無効化 |
DISABLE_PROMPT_CACHING / DISABLE_PROMPT_CACHING_HAIKU / _OPUS / _SONNET | 用途プロンプトキャッシュ無効化 |
ENABLE_PROMPT_CACHING_1H | 用途1時間キャッシュTTLをリクエスト |
FORCE_PROMPT_CACHING_5M | 用途5分TTLに強制 |
CLAUDE_CODE_DISABLE_1M_CONTEXT | 用途1Mコンテキストを無効化 |
MCP・ツール検索
| 変数 | 用途 |
|---|---|
MCP_TIMEOUT | 用途MCPサーバー起動タイムアウト(デフォルト30000) |
MCP_TOOL_TIMEOUT | 用途MCPツール実行タイムアウト |
MAX_MCP_OUTPUT_TOKENS | 用途MCP出力の最大トークン(デフォルト25000) |
ENABLE_TOOL_SEARCH | 用途true/auto/auto:N/false。MCPツールの遅延ロード |
MCP_CLIENT_SECRET | 用途OAuthクライアントシークレット |
MCP_OAUTH_CALLBACK_PORT | 用途OAuthコールバック固定ポート |
MCP_CONNECTION_NONBLOCKING | 用途非対話モードでMCP接続待機をスキップ |
MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE / MCP_SERVER_CONNECTION_BATCH_SIZE | 用途起動時の並列接続数 |
ENABLE_CLAUDEAI_MCP_SERVERS | 用途Claude.ai由来MCPサーバーの有効/無効 |
CLAUDE_AGENT_SDK_MCP_NO_PREFIX | 用途SDK作成MCPでmcp__<server>__プレフィックスを省略 |
テレメトリ・自動更新・運用
| 変数 | 用途 |
|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | 用途OTELテレメトリを有効化 |
DISABLE_TELEMETRY | 用途Statsigテレメトリを無効化 |
DISABLE_ERROR_REPORTING | 用途Sentryへの送信停止 |
DISABLE_FEEDBACK_COMMAND | 用途/feedbackを無効化 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 用途上記関連をまとめて無効化 |
DISABLE_AUTOUPDATER | 用途自動更新停止 |
DISABLE_INSTALLATION_CHECKS | 用途インストール警告非表示 |
DISABLE_COST_WARNINGS | 用途コスト警告非表示 |
CLAUDE_CODE_DISABLE_AUTO_MEMORY | 用途自動メモリ無効化 |
CLAUDE_CODE_SKIP_PROMPT_HISTORY | 用途トランスクリプト書き込みを完全抑止 |
CLAUDE_CODE_DISABLE_CLAUDE_MDS | 用途すべてのCLAUDE.md読込を禁止 |
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD | 用途--add-dir配下のCLAUDE.mdを読み込む |
CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS | 用途組み込みgit命令を除去 |
CLAUDE_CODE_NEW_INIT | 用途/initを対話型マルチフェーズに |
CLAUDE_CODE_REMOTE / CLAUDE_CODE_REMOTE_SESSION_ID | 用途Web環境で自動設定 |
CLAUDE_CODE_DEBUG_LOGS_DIR / CLAUDE_CODE_DEBUG_LOG_LEVEL | 用途デバッグログ |
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL / CLAUDE_CODE_AUTO_CONNECT_IDE / CLAUDE_CODE_IDE_HOST_OVERRIDE / CLAUDE_CODE_IDE_SKIP_VALID_CHECK | 用途IDE連携 |
CLAUDE_CODE_DISABLE_TERMINAL_TITLE | 用途ターミナルタイトル自動更新を停止 |
CLAUDE_CODE_DISABLE_MOUSE / CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL / CLAUDE_CODE_ACCESSIBILITY / CLAUDE_CODE_NO_FLICKER / CLAUDE_CODE_SCROLL_SPEED / CLAUDE_CODE_TMUX_TRUECOLOR | 用途TUI表示調整 |
CLAUDE_CONFIG_DIR | 用途設定ディレクトリ上書き(複数アカウント運用) |
CLAUDE_CODE_PLUGIN_CACHE_DIR / CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS / CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE / CLAUDE_CODE_PLUGIN_SEED_DIR / FORCE_AUTOUPDATE_PLUGINS / CLAUDE_CODE_SYNC_PLUGIN_INSTALL / CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS / CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL / CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH | 用途プラグイン制御 |
CLAUDE_CODE_PERFORCE_MODE | 用途Perforce書き込み保護 |
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB | 用途サブプロセス環境からAnthropic/クラウド認証情報を除去 |
CLAUDE_CODE_SCRIPT_CAPS | 用途スクリプト呼び出し回数の上限(JSON) |
CLAUDE_CODE_EXIT_AFTER_STOP_DELAY | 用途アイドル後の自動終了までのms |
CLAUDE_CODE_RESUME_INTERRUPTED_TURN | 用途中断ターンの自動再開 |
CLAUDE_CODE_ENABLE_TASKS | 用途非対話モードでタスクリスト有効化 |
CLAUDE_CODE_TASK_LIST_ID | 用途共有タスクリストID |
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS | 用途エージェントチーム有効化 |
CLAUDE_CODE_TEAM_NAME | 用途チームメイト所属名 |
CLAUDE_CODE_DISABLE_CRON | 用途スケジュール済みタスク無効化 |
CLAUDE_CODE_DISABLE_FAST_MODE / CLAUDE_CODE_DISABLE_BACKGROUND_TASKS / CLAUDE_AUTO_BACKGROUND_TASKS / CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING / CLAUDE_CODE_DISABLE_ATTACHMENTS / CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS / CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING / CLAUDE_CODE_ENABLE_AWAY_SUMMARY / CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION | 用途個別機能トグル |
CLAUDE_CODE_SYNTAX_HIGHLIGHT | 用途diff出力の構文強調 |
CLAUDE_CODE_TMPDIR | 用途一時ディレクトリ上書き |
CLAUDE_ENV_FILE | 用途Bashコマンド前に実行するスクリプト(環境永続化) |
CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX | 用途リモートコントロール名プレフィックス |
CLAUDE_ENABLE_BYTE_WATCHDOG / CLAUDE_ENABLE_STREAM_WATCHDOG / CLAUDE_STREAM_IDLE_TIMEOUT_MS | 用途ストリーミングアイドル監視 |
CLAUDE_CODE_MAX_RETRIES | 用途失敗APIリクエストの再試行数(デフォルト10) |
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK | 用途非ストリーミングフォールバックを禁止 |
CLAUDE_CODE_SIMPLE | 用途--bare相当の最小起動 |
CCR_FORCE_BUNDLE | 用途claude --remoteでローカルバンドルを強制 |
DISABLE_BUG_COMMAND | 用途旧名(DISABLE_FEEDBACK_COMMANDと等価) |
DISABLE_DOCTOR_COMMAND / DISABLE_EXTRA_USAGE_COMMAND / DISABLE_INSTALL_GITHUB_APP_COMMAND / DISABLE_LOGIN_COMMAND / DISABLE_LOGOUT_COMMAND / DISABLE_UPGRADE_COMMAND | 用途各種コマンド非表示 |
DISABLE_INTERLEAVED_THINKING | 用途インターリーブ思考β無効化 |
FALLBACK_FOR_ALL_PRIMARY_MODELS | 用途Opus以外でも--fallback-model発動 |
IS_DEMO | 用途デモモード(メール/組織名非表示) |
SLASH_COMMAND_TOOL_CHAR_BUDGET | 用途Skillメタデータの文字予算 |
MAX_STRUCTURED_OUTPUT_RETRIES | 用途--json-schema検証失敗時の再試行数(デフォルト5) |
CLAUDECODE | 用途Claude Code配下シェルで1に自動設定(検出用) |
CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS | 用途組み込みsubagent無効化 |
OpenTelemetry
| 変数 | 用途 |
|---|---|
OTEL_LOG_RAW_API_BODIES | 用途Messages API丸ごとをOTELログに含める |
OTEL_LOG_TOOL_CONTENT / OTEL_LOG_TOOL_DETAILS / OTEL_LOG_USER_PROMPTS | 用途ツール/プロンプト情報の出力制御 |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID / OTEL_METRICS_INCLUDE_SESSION_ID / OTEL_METRICS_INCLUDE_VERSION | 用途メトリクス属性 |
CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS / CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS / CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS | 用途OTELタイムアウト |
標準のOTEL_METRICS_EXPORTER・OTEL_LOGS_EXPORTER・OTEL_EXPORTER_OTLP_ENDPOINT・OTEL_EXPORTER_OTLP_PROTOCOL・OTEL_EXPORTER_OTLP_HEADERS・OTEL_METRIC_EXPORT_INTERVAL・OTEL_RESOURCE_ATTRIBUTESとそのシグナル固有バリアントも同様にサポートされます。
設計原則
秘匿情報と環境依存値は環境変数、再現したい挙動はsettings.jsonが基本線です。APIキーをsettings.jsonに書くとgit commitで流出する事故が現実に起こるので、direnv/OSキーチェーン/1Password CLI/apiKeyHelperと組み合わせるのが安全です。
CLIフラグで上書きできる設定
claude起動時のフラグはセッション単位で多くの項目を上書きできます。公式docsの全フラグを用途別に並べると次の通りです。
サブコマンド
| コマンド | 用途 |
|---|---|
claude | 用途対話セッション開始 |
claude "query" | 用途初期プロンプト付きで対話開始 |
claude -p "query" | 用途SDK経由で実行して終了 |
claude -c / claude -c -p "query" | 用途最新会話を継続 |
claude -r "<session>" "query" | 用途セッションID/名で再開 |
claude update | 用途最新版に更新 |
claude auth login / logout / status | 用途認証管理(--email/--sso/--console/--text) |
claude agents | 用途設定済みsubagent一覧 |
claude auto-mode defaults | 用途組み込みauto mode分類器ルール出力 |
claude mcp | 用途MCPサーバー設定 |
claude plugin | 用途プラグイン管理(エイリアスplugins) |
claude remote-control | 用途リモートコントロールサーバー起動 |
モード・モデル・ツール制御
| フラグ | 用途 |
|---|---|
--model | 用途モデル指定(sonnet/opus/完全名) |
--fallback-model | 用途プライマリ過負荷時のフォールバック(printモードのみ) |
--effort | 用途low/medium/high/max |
--permission-mode | 用途default/acceptEdits/plan/auto/dontAsk/bypassPermissions |
--allowedTools / --disallowedTools | 用途追加allow/deny。settings.jsonと同構文 |
--tools | 用途組み込みツールの許可セット(""/"default"/"Bash,Edit,Read") |
--dangerously-skip-permissions | 用途全権限プロンプトスキップ |
--allow-dangerously-skip-permissions | 用途Shift+TabサイクルにbypassPermissions追加 |
--enable-auto-mode | 用途Shift+Tabサイクルでauto mode解除(Team/Enterprise/API) |
--bare | 用途最小起動(CLAUDE_CODE_SIMPLE相当) |
--betas | 用途ベータヘッダー(APIキーのみ) |
ファイル・セッション
| フラグ | 用途 |
|---|---|
--add-dir | 用途追加の作業ディレクトリ |
--agent | 用途エージェント設定の上書き |
--agents | 用途JSONでsubagentを動的定義 |
--session-id / --resume(-r) / --continue(-c) / --fork-session | 用途セッション管理 |
--from-pr | 用途GitHub PRにリンクされたセッションを再開 |
--name(-n) | 用途セッション表示名 |
--worktree(-w) / --tmux | 用途git worktreeで起動 |
--setting-sources | 用途読み込む設定ソース(user,project,local) |
--settings | 用途追加で読み込む設定JSON |
--mcp-config / --strict-mcp-config | 用途MCP設定ファイル指定 |
--plugin-dir | 用途プラグインディレクトリ追加 |
システムプロンプト系(4種)
| フラグ | 挙動 |
|---|---|
--system-prompt | 挙動デフォルトプロンプト全体を置き換え |
--system-prompt-file | 挙動ファイル内容で置き換え |
--append-system-prompt | 挙動末尾に追加 |
--append-system-prompt-file | 挙動ファイル内容を末尾追加 |
置き換えフラグは相互排他、追加フラグは置き換えフラグと組み合わせられます。破壊的な置き換えが不要なら--append側が安全です。
非対話(print)モード系
| フラグ | 用途 |
|---|---|
--print(-p) | 用途非対話で応答出力 |
--output-format | 用途text/json/stream-json |
--input-format | 用途text/stream-json |
--include-hook-events | 用途フックライフサイクルイベントを出力ストリームに含める(stream-json必須) |
--include-partial-messages | 用途部分ストリーミングイベントを含める |
--replay-user-messages | 用途stdinユーザーメッセージをstdoutに再発行 |
--max-turns | 用途エージェントターン数上限 |
--max-budget-usd | 用途API支出上限(USD) |
--json-schema | 用途JSON Schemaに一致する検証済み出力 |
--no-session-persistence | 用途セッションをディスク保存しない |
--permission-prompt-tool | 用途権限プロンプトを処理するMCPツール指定 |
その他
--verbose / --debug / --debug-file / --version / --ide / --no-chrome / --chrome / --init / --init-only / --maintenance / --remote / --remote-control(--rc) / --teleport / --teammate-mode / --disable-slash-commands / --channels / --dangerously-load-development-channels など。
permissionsフィールド詳細
permissionsはallow/ask/deny/additionalDirectories/defaultMode/disableBypassPermissionsMode/skipDangerousModePermissionPromptの7フィールドで構成されます。
構文の基本
ルールはToolまたはTool(specifier)形式で、deny → ask → allowの順に評価され、最初にマッチしたものが勝ちます。denyが優先される設計なので、上位スコープのdenyは下位で覆せません。
{
"permissions": {
"allow": ["Bash(npm run *)", "Bash(git diff *)", "Read(~/.config/**)"],
"ask": ["Bash(git push *)"],
"deny": ["Bash(curl *)", "Read(./.env*)", "Read(./secrets/**)"],
"additionalDirectories": ["../shared-lib/"],
"defaultMode": "acceptEdits",
"disableBypassPermissionsMode": "disable"
}
}ツール別パターン
Bash
*ワイルドカードが強力:Bash(npm run *)はnpm runで始まる全てにマッチBash(git * main)はgit checkout mainやgit push origin mainにマッチ- シェルオペレータ(
&&/||/;/|/改行)は独立評価:Bash(safe-cmd *)ではsafe-cmd && other-cmdは許可されない timeout/time/nice/nohup/stdbuf/ 引数なしxargsは前置ラッパーとしてstripされた後にルールが適用される- 一方、
devbox run/npx/docker execなどの開発環境ランナーはstripされない。Bash(devbox run *)は後ろの任意コマンドを通してしまうので、内部コマンドごとに明示的ルールを書くのが安全 - 読み取り専用コマンド(
ls/cat/grep/find/wc/diff/cd/読み取り系git等)は全モードで承認不要
Read / Edit(gitignore風パスパターン)
| パターン | 意味 |
|---|---|
//path | 意味ファイルシステムルートからの絶対パス |
~/path | 意味ホームディレクトリ基準 |
/path | 意味プロジェクトルートからの相対パス |
path / ./path | 意味カレントディレクトリからの相対 |
Editは書き込み系全ビルトイン、ReadはGrep/Globなど読み取り系全般にベストエフォート適用されます。
重要: Read/Editのdenyはbashサブプロセスには効きません。Read(./.env)を拒否してもcat .envは通ります。OSレベルで遮断するにはsandbox.filesystem.denyReadを併用します。詳細はClaude Codeセキュリティガイドでも扱っています。
WebFetch / MCP / Agent
WebFetch(domain:example.com)— ドメイン指定mcp__<server>/mcp__<server>__*/mcp__<server>__<tool>— MCPサーバー/ツール単位Agent(AgentName)— 特定のsubagent
権限モード(Permission Modes)
| モード | 挙動 | 典型シーン |
|---|---|---|
default | 挙動各ツール初回使用時に確認 | 典型シーン慎重に進める通常利用 |
acceptEdits | 挙動編集系(mkdir/touch/mv/cp含む)を作業ディレクトリ内で自動承認、Bashは都度 | 典型シーン個人開発の本体作業 |
plan | 挙動ファイル分析のみ。変更・コマンド実行は不可 | 典型シーン未知のリポジトリで方針検討 |
auto | 挙動分類器モデルでブロック/許可を自動判定(研究プレビュー) | 典型シーン信頼境界が明示された環境 |
dontAsk | 挙動事前承認済み以外は自動拒否 | 典型シーン明示的な許可集合だけを許す運用 |
bypassPermissions | 挙動保護ディレクトリ(.git/.claude/.vscode/.idea/.husky)以外の確認をスキップ | 典型シーンコンテナ・VMなど隔離環境 |
bypassPermissionsは閉じたサンドボックス以外では使わないのが実務の安全ラインです。組織として強制するには、managed設定でpermissions.disableBypassPermissionsMode: "disable"を入れます。
additionalDirectoriesの勘所
追加ディレクトリはファイルアクセスを拡張するだけで、そこの.claude/設定は大半読み込まれません。例外は.claude/skills/(ライブリロード付き)、enabledPlugins/extraKnownMarketplaces、そしてCLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1を設定した場合のCLAUDE.md・.claude/rules/です。subagents・commands・hooksを共有したいなら、ユーザーレベル設定かプラグインに寄せるのが正攻法です。
sandboxフィールド詳細
BashサンドボックスはOSレベルでの分離を提供し、権限ルール(Claude側のツールアクセス)とは別の防御層として機能します。macOS・Linux・WSL2で有効化できます。
主要フィールド
| フィールド | 用途 |
|---|---|
sandbox.enabled | 用途bashサンドボックス有効化 |
sandbox.failIfUnavailable | 用途サンドボックス起動失敗で終了(managedでハードゲートに) |
sandbox.autoAllowBashIfSandboxed | 用途サンドボックス内なら自動承認 |
sandbox.excludedCommands | 用途サンドボックス外で実行するコマンド |
sandbox.allowUnsandboxedCommands | 用途dangerouslyDisableSandboxエスケープハッチの可否 |
sandbox.filesystem.allowWrite | 用途書き込み可能な追加パス(スコープ間マージ) |
sandbox.filesystem.denyWrite | 用途書き込み不可のパス |
sandbox.filesystem.denyRead | 用途読み取り不可のパス |
sandbox.filesystem.allowRead | 用途denyRead領域内で再許可するパス |
sandbox.filesystem.allowManagedReadPathsOnly | 用途(Managed) allowReadをmanagedだけに限定 |
sandbox.network.allowUnixSockets (macOS) / allowAllUnixSockets | 用途Unixソケット |
sandbox.network.allowLocalBinding (macOS) | 用途localhostバインド許可 |
sandbox.network.allowMachLookup (macOS) | 用途XPC/Machサービス(プレフィックス*対応) |
sandbox.network.allowedDomains / deniedDomains | 用途外向きドメイン制御(*ワイルドカード) |
sandbox.network.allowManagedDomainsOnly | 用途(Managed) allowedDomainsをmanagedだけに限定 |
sandbox.network.httpProxyPort / socksProxyPort | 用途独自プロキシのポート |
sandbox.enableWeakerNestedSandbox | 用途Docker非特権環境用(Linux/WSL2) |
sandbox.enableWeakerNetworkIsolation (macOS) | 用途システムTLS信頼サービスを許可 |
設定例
{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true,
"excludedCommands": ["docker *"],
"filesystem": {
"allowWrite": ["/tmp/build", "~/.kube"],
"denyRead": ["~/.aws/credentials"]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],
"deniedDomains": ["uploads.github.com"],
"allowLocalBinding": true
}
}
}パスは/tmp/buildのような絶対パス、~/.kubeのようなホーム基準、./outputのようなプロジェクト相対(./または接頭辞なし)が使えます。//pathの旧記法も絶対パスとして機能します。
hooksフィールド詳細
hooksはイベント → matcher → ハンドラー配列の3段ネスト構造で、Claudeに何かをさせるのではなくharnessが外部コマンド/HTTPを実行する仕組みです。
全イベント
| カテゴリ | 代表イベント |
|---|---|
| セッション | 代表イベントSessionStart / SessionEnd / InstructionsLoaded |
| 入力 | 代表イベントUserPromptSubmit / UserPromptExpansion |
| ツール実行 | 代表イベントPreToolUse(ブロック可) / PostToolUse / PostToolUseFailure / PermissionRequest / PermissionDenied |
| エージェント | 代表イベントSubagentStart / SubagentStop / TaskCreated / TaskCompleted / TeammateIdle |
| 応答制御 | 代表イベントStop / StopFailure / Notification |
| 環境 | 代表イベントCwdChanged / FileChanged / ConfigChange |
| worktree | 代表イベントWorktreeCreate(パス返却必須) / WorktreeRemove |
| コンパクト | 代表イベントPreCompact(ブロック可) / PostCompact |
| MCP | 代表イベントElicitation / ElicitationResult |
ハンドラータイプ
typeはcommand/http/prompt/agentの4種です。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/lint.sh",
"timeout": 30,
"statusMessage": "Linting..."
}
]
}
]
}
}終了コード: 0=成功(JSON出力をパース)、2=ブロッキングエラー(stderrがフィードバック)、その他=非ブロッキングエラー(stderrは通知)。PreToolUse・PermissionRequest・UserPromptSubmit・Stop・PreCompactなどがブロック可能です。
HTTPフックの環境変数補間
{
"hooks": {
"PreToolUse": [
{
"matcher": "mcp__.*",
"hooks": [
{
"type": "http",
"url": "http://localhost:8080/validate",
"headers": { "Authorization": "Bearer $AUTH_TOKEN" },
"allowedEnvVars": ["AUTH_TOKEN"],
"timeout": 30
}
]
}
]
}
}allowedEnvVarsに列挙した環境変数のみが$VARで補間できます。管理者がallowedHttpHookUrls/httpHookAllowedEnvVarsを設定すると、各フックの許容範囲はそれらとの交差に絞られます。
詳しい運用はHooksセットアップ入門で扱っています。
mcpServersフィールド詳細
MCPサーバーはstdio・sse・httpの3トランスポートで設定できます(SSEは非推奨・HTTP推奨)。
3トランスポートの最小例
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"airtable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": { "AIRTABLE_API_KEY": "${AIRTABLE_API_KEY}" }
},
"legacy": {
"type": "sse",
"url": "https://mcp.example.com/sse"
}
}
}スコープと保存先
| スコープ | 保存場所 | 共有 |
|---|---|---|
local(既定) | 保存場所~/.claude.json(プロジェクトパスの下) | 共有× |
project | 保存場所<repo>/.mcp.json | 共有○(git commit) |
user | 保存場所~/.claude.json | 共有全プロジェクトの自分のみ |
claude mcp add --scope <scope>か直接ファイル編集で登録します。.mcp.jsonでは${VAR} / ${VAR:-default}の環境変数展開がサポートされ、チームで共有しつつマシン固有の値を外出しできます。claude mcp add-from-claude-desktopでClaude Desktopからの移行もできます。
headersHelperによる動的認証
OAuth以外の認証(Kerberos/短期トークン/社内SSO等)にはheadersHelperを使います。起動/再接続ごとにスクリプトを実行し、stdoutに{"Authorization": "Bearer xxx"}のようなJSONを書かせるとヘッダーとしてマージされます。
{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
}
}
}環境変数CLAUDE_CODE_MCP_SERVER_NAME・CLAUDE_CODE_MCP_SERVER_URLがスクリプトに渡されるので、1つのヘルパーで複数サーバーを捌けます。
管理ポリシーでの制御
組織ではmanaged-mcp.jsonによる排他的制御(ユーザー追加不可)か、allowedMcpServers/deniedMcpServersの許可/拒否リストで制御します。後者はserverName / serverCommand(配列完全一致) / serverUrl(*ワイルドカード)の3方式でフィルタ可能です。詳しい手順はMCP実践ガイドでまとめています。
outputStyleでClaudeの振る舞いを切り替える
出力スタイルはClaude Codeのシステムプロンプトそのものを差し替える仕組みです。CLAUDE.mdや--append-system-promptがシステムプロンプトの「後」に追加するのに対し、出力スタイルはソフトウェアエンジニアリング固有の組み込み命令を丸ごと置き換えます。
組み込みスタイル
| スタイル | 用途 |
|---|---|
Default | 用途ソフトウェアエンジニアリング向けの既定 |
Explanatory | 用途教育的な「Insights」付きで実装理由を説明 |
Learning | 用途TODO(human)マーカーで学習者に実装を委ねる協調モード |
カスタム出力スタイル
~/.claude/output-styles/<name>.md(ユーザー)または.claude/output-styles/<name>.md(プロジェクト)にfrontmatter付きマークダウンを置きます。
---
name: Reviewer
description: コードレビュー専用、実装はせず指摘のみ
keep-coding-instructions: false
---
あなたはシニアエンジニアとしてコードレビューを行います。
実装ではなく、問題点・改善提案・質問のみを出力してください。keep-coding-instructions: trueにすると、組み込みのコーディング命令(テスト検証など)を残したまま追記する形になります。falseにするとコーディング命令を丸ごとオフにしてレビュアー専用/ライター専用のエージェントに変身させられます。
statusLineの動的カスタマイズ
ステータスラインはシェルスクリプトの出力をそのまま表示します。stdinにJSONセッションデータが流れ込み、stdoutに書いたテキストが描画されます。
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 2,
"refreshInterval": 5
}
}受け取れる主要フィールド(抜粋)
model.display_name / workspace.current_dir / workspace.project_dir / workspace.git_worktree / context_window.used_percentage / context_window.current_usage / cost.total_cost_usd / cost.total_duration_ms / rate_limits.five_hour.used_percentage / rate_limits.seven_day.used_percentage / session_id / session_name / version / output_style.name / vim.mode / agent.name / worktree.* / exceeds_200k_tokensなど30種以上。
コンテキスト使用率の正確な値はused_percentageで、total_input_tokensはセッション全体の累積(コンテキストウィンドウを超え得る)。用途を分ける必要があります。
更新タイミング
新しいアシスタントメッセージ後 / 権限モード変更時 / vimモード切替時にスクリプトが実行され、300msでデバウンスされます。アイドル中も更新したい場合はrefreshIntervalで秒単位のタイマー更新を追加します。
subagentStatusLineを設定すれば、エージェントパネルの各行もカスタム描画に差し替えられます。
CLAUDE.mdメモリ統合
CLAUDE.mdはharnessが決める「実行環境」とは別に、Claude本体の振る舞いを整えるマークダウンです。各セッションの開始時にシステムプロンプト直後のユーザーメッセージとして投入されます。
階層と読み込み順
| スコープ | パス | 用途 |
|---|---|---|
| 管理ポリシー | パスmacOS: /Library/Application Support/ClaudeCode/CLAUDE.md / Linux: /etc/claude-code/CLAUDE.md / Windows: C:\Program Files\ClaudeCode\CLAUDE.md | 用途組織全体で強制(個別設定で除外不可) |
| プロジェクト | パス./CLAUDE.mdまたは./.claude/CLAUDE.md | 用途チーム共有のプロジェクト規約 |
| ユーザー | パス~/.claude/CLAUDE.md | 用途全プロジェクト共通の個人ルール |
| ローカル | パス./CLAUDE.local.md | 用途.gitignore推奨の個人メモ |
ワーキングディレクトリから親ディレクトリへ遡り途中の全てのCLAUDE.md・CLAUDE.local.mdがコンテキストに追加されます。サブディレクトリ内のCLAUDE.mdはオンデマンド読み込みで、そのディレクトリのファイルを読むときに初めて展開されます。
@file参照と再帰ロード
@path/to/file記法で他ファイルをインポートできます。相対パスはインポート元ファイル基準、絶対パスも可。最大5ホップまで再帰で展開されます。モノレポの共有規約をサブリポジトリに取り込む構成や、~/.claude/配下の個人ルールを@~/.claude/my-rules.mdで引き込む構成が効きます。
AGENTS.mdとの併用
Claude CodeはAGENTS.mdを直接読みませんが、CLAUDE.mdの先頭に@AGENTS.mdと書けば両方のエージェント向け命令を一元管理できます。本プロジェクトのCLAUDE.mdもこのパターンです。
ベストプラクティス
CLAUDE.mdは1ファイル200行以下が推奨です。長くなりすぎるとコンテキストを消費し、遵守度も下がります。分割するには@インポートか.claude/rules/<topic>.mdを使います。pathsフィールド付きの条件ルールにすると、一致するファイルを読むときだけロードされるため、モノレポで特に有効です。
---
paths:
- "src/api/**/*.ts"
- "lib/**/*.ts"
---
# API開発ルール
- 全てのエンドポイントは入力検証を含める
- 標準エラー応答形式を使用する10の実務パターンはCLAUDE.md 10パターンにまとめています。
実戦レシピ10選
公式docsが「各フィールドの仕様」までで止まっているところを埋める、運用面での組み合わせレシピです。全て動くコード例+解説+落とし穴をセットで。
レシピ1: PostToolUseで自動フォーマット
編集のたびにprettierを走らせて差分ノイズを抑えます。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "pnpm exec prettier --write --ignore-unknown \"$CLAUDE_PROJECT_DIR\"",
"timeout": 30
}
]
}
]
}
}落とし穴: timeoutを明示しないとデフォルト600秒でブロックされ得ます。また、フォーマッター自体がエラーで終了コード2を返すとツール実行が止まるので、ラッパースクリプトで|| trueを噛ませるのも手です。
レシピ2: Bash許可リストでサンドボックス的運用
{
"permissions": {
"defaultMode": "acceptEdits",
"additionalDirectories": ["~/work/shared-lib"],
"allow": [
"Bash(pnpm *)",
"Bash(npm run *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git status*)",
"Bash(gh pr list*)"
],
"ask": ["Bash(git push*)", "Bash(gh pr create*)"],
"deny": ["Bash(rm -rf *)", "Bash(curl *)", "Bash(sudo *)"]
}
}落とし穴: Bash(git * main)のようなワイルドカードはgit reset --hard mainなどにもマッチするので、危険コマンドはdenyに個別追加しておくのが安全です。
レシピ3: Bedrockを使うときの最小設定
{
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_REGION": "us-east-1",
"ANTHROPIC_MODEL": "us.anthropic.claude-sonnet-4-6-20250929-v1:0",
"ANTHROPIC_SMALL_FAST_MODEL": "us.anthropic.claude-haiku-4-5-20251001-v1:0"
},
"awsAuthRefresh": "aws sso login --profile my-profile"
}落とし穴: AWS SSO運用ではawsAuthRefreshを書いておくと、セッション途中で認証切れしたときに自動再ログインしてくれます。CLAUDE_CODE_SKIP_BEDROCK_AUTH=1はLLMゲートウェイ経由時のみ使います。
レシピ4: チーム共通設定をプロジェクトで配布
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "claude-sonnet-4-6",
"availableModels": ["sonnet", "opus"],
"includeGitInstructions": false,
"permissions": {
"defaultMode": "default",
"allow": [
"Bash(pnpm run *)",
"Bash(pnpm exec *)",
"Bash(pnpm test*)",
"Read(./package.json)",
"Read(./tsconfig.json)"
],
"ask": ["Bash(git push*)"],
"deny": ["Read(./.env*)", "Read(./secrets/**)", "Bash(curl *)"]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{ "type": "command", "command": "pnpm exec biome check --write --unsafe \"$CLAUDE_PROJECT_DIR\"", "timeout": 30 }
]
}
]
},
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}落とし穴: apiKeyHelperやenvのAPIキーは絶対に.claude/settings.jsonに書かない(git commitされるため)。個人差のある設定は~/.claude/settings.jsonか.claude/settings.local.jsonに寄せます。
レシピ5: Managed policyでbypassPermissionsを禁止
{
"permissions": {
"disableBypassPermissionsMode": "disable",
"disableAutoMode": "disable"
},
"allowManagedPermissionRulesOnly": true,
"disableSkillShellExecution": true,
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"filesystem": {
"allowManagedReadPathsOnly": true
},
"network": {
"allowManagedDomainsOnly": true,
"allowedDomains": ["github.com", "*.npmjs.org", "api.anthropic.com"]
}
},
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": "00000000-0000-0000-0000-000000000000",
"minimumVersion": "2.1.100"
}落とし穴: allowManagedPermissionRulesOnly: trueを入れるとユーザー/プロジェクト側のallow/ask/denyが全て無視されます。許可したいコマンドはmanaged側で列挙する必要があります。
レシピ6: MCPサーバーにenv経由で秘密情報を渡す
{
"mcpServers": {
"airtable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "airtable-mcp-server"],
"env": {
"AIRTABLE_API_KEY": "${AIRTABLE_API_KEY}",
"AIRTABLE_BASE_ID": "${AIRTABLE_BASE_ID:-default_base}"
}
},
"internal-sso": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-internal-token.sh"
}
}
}export AIRTABLE_API_KEY="$(op read 'op://Work/Airtable/credential')"
export AIRTABLE_BASE_ID="appXXXXX"落とし穴: ${VAR}展開が失敗するとサーバー起動自体が失敗します。デフォルト値が欲しいときは${VAR:-default}、必須にしたいときはデフォルトなしで書きます。
レシピ7: cost alertをhooks.Notification+独自スクリプトで
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/cost-alert.sh"
}
]
}
]
}
}#!/usr/bin/env bash
set -euo pipefail
input=$(cat)
# 通知が権限プロンプトのときだけSlackへ
type=$(echo "$input" | jq -r '.notification_type // ""')
if [ "$type" = "permission_prompt" ]; then
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-Type: application/json' \
-d "$(jq -n --arg text "Claude Code: 権限プロンプト待ち (session=$(echo "$input" | jq -r .session_id))" '{text: $text}')"
fi
exit 0落とし穴: Notificationイベントはブロック不可。終了コード2を返しても通知は出ます。非0で終了するとstderrがユーザーに表示されるので、失敗してもサイレントにしたい場合はexit 0で締めます。
レシピ8: statusLineでGit branch+コスト表示
#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name')
DIR=$(echo "$input" | jq -r '.workspace.current_dir')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
BRANCH=""
if git -C "$DIR" rev-parse --git-dir > /dev/null 2>&1; then
BRANCH=" | 🌿 $(git -C "$DIR" branch --show-current 2>/dev/null)"
fi
printf '[%s] 📁 %s%s | 💰 $%.2f | %d%%\n' \
"$MODEL" "${DIR##*/}" "$BRANCH" "$COST" "$PCT"{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"refreshInterval": 5
}
}落とし穴: gitコマンドが遅いと描画がブロックされます。モノレポではsession_idを使ったキャッシュを挟むと快適です(公式docsの「高コストな操作をキャッシュする」パターン)。
レシピ9: outputStyleでレビュアー役を切り替え
---
name: PR Reviewer
description: コードレビュー専用(実装禁止)
keep-coding-instructions: false
---
あなたはシニアエンジニアです。実装変更は一切行わず、以下を出力してください:
1. 変更点のサマリー
2. リスクの高い箇所(セキュリティ/パフォーマンス/破壊的変更)
3. 改善提案(優先度付き)
4. 質問/確認事項
敬体(ですます調)で書いてください。{
"outputStyle": "PR Reviewer"
}落とし穴: keep-coding-instructions: falseはテスト検証などの組み込み命令も切るので、実装させる意図ならtrueにします。
レシピ10: CLAUDE.mdを@file参照で肥大化させない
# プロジェクト共通ルール
@AGENTS.md
@.claude/rules/coding-style.md
@.claude/rules/git-workflow.md
# 補足(Claude Code専用)
- 変更前に `pnpm run typecheck` を通すこと
- `src/api/` 配下は `.claude/rules/api.md` を参照---
paths:
- "src/api/**/*.ts"
---
# API開発ルール
- 入力検証は zod で実装
- エラーレスポンスは `{ error: { code, message } }` 形式落とし穴: paths付きのルールは一致ファイルを読むまでロードされません。常に必要なルールはpathsなしのルールかCLAUDE.md直書きにします。再帰深度は5ホップまで。
3シナリオ別の即貼付プリセットJSON
個人開発・チーム開発・エンタープライズの3シナリオで、そのまま貼り付けて運用開始できる完全版のJSONを示します。
個人開発プリセット: ~/.claude/settings.json
スピード重視。acceptEditsで走り抜けつつ、危険操作だけ明示的にガードします。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "claude-sonnet-4-6",
"outputStyle": "Default",
"language": "japanese",
"includeGitInstructions": true,
"attribution": {
"commit": "",
"pr": ""
},
"permissions": {
"defaultMode": "acceptEdits",
"additionalDirectories": ["~/work/shared"],
"allow": [
"Bash(pnpm *)",
"Bash(npm *)",
"Bash(bun *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git status*)",
"Bash(git branch*)",
"Bash(gh repo view*)",
"Bash(gh pr list*)",
"Bash(gh issue list*)",
"Read(~/.config/**)"
],
"ask": [
"Bash(git push*)",
"Bash(gh pr create*)",
"Bash(gh pr merge*)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(sudo *)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Read(./.env*)",
"Read(./secrets/**)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "pnpm exec prettier --write --ignore-unknown \"$CLAUDE_PROJECT_DIR\" 2>/dev/null || true",
"timeout": 30
}
]
}
]
},
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"refreshInterval": 5
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "0",
"BASH_DEFAULT_TIMEOUT_MS": "180000",
"MAX_MCP_OUTPUT_TOKENS": "50000"
}
}選定理由: APIキーはenvに直書きせずdirenvやOSキーチェーンから注入。acceptEditsで割り込みを減らし、git push系だけaskに残すことで「不可逆操作はワンクリック確認」を保ちます。attributionを空にして個人リポジトリの署名を消しています。
チーム開発プリセット: .claude/settings.json(project)
clone直後に権限・モデル・hook・statusLineが揃った状態を作ります。個人差は~/.claude/側に逃がします。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "claude-sonnet-4-6",
"availableModels": ["sonnet", "opus"],
"includeGitInstructions": false,
"permissions": {
"defaultMode": "default",
"allow": [
"Bash(pnpm install)",
"Bash(pnpm run *)",
"Bash(pnpm exec *)",
"Bash(pnpm test*)",
"Bash(pnpm typecheck*)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git status*)",
"Bash(git branch*)"
],
"ask": [
"Bash(git push*)",
"Bash(gh pr create*)",
"Bash(gh pr merge*)",
"Bash(pnpm publish*)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(sudo *)",
"Bash(git push --force*)",
"Read(./.env*)",
"Read(./secrets/**)",
"Read(./config/credentials.json)",
"Edit(./.github/workflows/**)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"if": "Bash(pnpm publish*)",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/pre-publish-check.sh",
"timeout": 60
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "pnpm exec biome check --write --unsafe \"$CLAUDE_PROJECT_DIR\" 2>/dev/null || true",
"timeout": 30
}
]
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/setup-env.sh"
}
]
}
]
},
"statusLine": {
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/scripts/statusline.sh",
"padding": 1,
"refreshInterval": 10
},
"enableAllProjectMcpServers": false,
"enabledMcpjsonServers": ["github", "internal-docs"],
"attribution": {
"commit": "",
"pr": ""
},
"claudeMdExcludes": [
"**/node_modules/**/CLAUDE.md"
]
}選定理由: defaultMode: "default"で新メンバーが意図せず破壊しない。includeGitInstructions: falseで独自のgitワークフロー(commit prefix規約等)をCLAUDE.mdで定義する前提。availableModelsでHaikuを除外し、品質のばらつきを抑えます。enabledMcpjsonServersで安全なサーバーのみ承認。
エンタープライズプリセット: managed-settings.json
監査・DLP・コスト管理が前提。managed層をハード境界として使います。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"minimumVersion": "2.1.100",
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": "00000000-0000-0000-0000-000000000000",
"forceRemoteSettingsRefresh": true,
"availableModels": ["sonnet", "opus"],
"model": "claude-sonnet-4-6",
"permissions": {
"defaultMode": "default",
"disableBypassPermissionsMode": "disable",
"disableAutoMode": "disable",
"skipDangerousModePermissionPrompt": false
},
"allowManagedPermissionRulesOnly": true,
"allowManagedHooksOnly": true,
"allowManagedMcpServersOnly": true,
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverUrl": "https://mcp.internal.example.com/*" }
],
"deniedMcpServers": [
{ "serverName": "filesystem" }
],
"allowedHttpHookUrls": [
"https://audit.internal.example.com/*",
"https://hooks.internal.example.com/*"
],
"httpHookAllowedEnvVars": ["AUDIT_TOKEN"],
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"autoAllowBashIfSandboxed": false,
"allowUnsandboxedCommands": false,
"excludedCommands": ["docker *"],
"filesystem": {
"allowManagedReadPathsOnly": true,
"allowRead": ["."],
"denyRead": [
"~/.aws/credentials",
"~/.ssh/**",
"~/.config/gh/**"
],
"allowWrite": ["/tmp/build"]
},
"network": {
"allowManagedDomainsOnly": true,
"allowedDomains": [
"api.anthropic.com",
"github.com",
"*.githubusercontent.com",
"registry.npmjs.org",
"*.internal.example.com"
],
"deniedDomains": [
"pastebin.com",
"transfer.sh"
],
"allowLocalBinding": false
}
},
"strictKnownMarketplaces": [
{ "source": "github", "repo": "example-corp/approved-plugins" }
],
"blockedMarketplaces": [
{ "source": "github", "repo": "untrusted/plugins" }
],
"channelsEnabled": false,
"allowedChannelPlugins": [],
"disableSkillShellExecution": true,
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_REGION": "us-east-1",
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_ENDPOINT": "https://otlp.internal.example.com",
"CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS": "0",
"CLAUDE_CODE_SUBPROCESS_ENV_SCRUB": "1",
"DISABLE_INSTALL_GITHUB_APP_COMMAND": "1"
},
"companyAnnouncements": [
"本環境のClaude Codeは監査ログが有効です。秘密情報の投入は禁止されています。"
]
}選定理由: allowManagedPermissionRulesOnly + allowManagedHooksOnly + allowManagedMcpServersOnlyでユーザーが追加で広げる余地を全封。forceRemoteSettingsRefreshでリモートポリシー取得失敗時はfail-closedで起動拒否。CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1でBash/Hooks/MCPの子プロセスからクラウド認証情報を除去し、プロンプトインジェクション経由のシークレット流出経路を塞いでいます。CLAUDE_CODE_USE_BEDROCKでAPIキーをユーザーに持たせずプロバイダーで統制。
トラブルシューティング早見表
| 症状 | 調べる場所 | 対処 |
|---|---|---|
| 設定が反映されない | 調べる場所/status | 対処アクティブソース(User/Project/Local/Managed)を確認。配列はマージされるので重複に注意 |
| 権限ルールが効かない | 調べる場所/status + deny→ask→allowの順序 | 対処より特異な上位スコープにdenyがあると下位では覆せない。ManagedでallowManagedPermissionRulesOnly: trueが有効になっていないか確認 |
| hooksが走らない | 調べる場所disableAllHooks / allowManagedHooksOnly | 対処matcherの正規表現、イベント名の綴り、フックコマンドの終了コードを確認。InstructionsLoaded hookでロード状況をログ出力するのも有効 |
| MCPが繋がらない | 調べる場所/mcp / claude mcp get <name> | 対処stdio/sse/httpの指定ミス、.mcp.jsonでの${VAR}展開失敗、プロジェクトスコープの承認未完了(enableAllProjectMcpServers/enabledMcpjsonServersを確認) |
| モデルが勝手に変わる | 調べる場所availableModels + CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP | 対処Managed側でmodelが固定されていないか、環境変数ANTHROPIC_MODELが上書きしていないかを確認 |
Readのdenyが効かない | 調べる場所bash経由のcatを試す | 対処Read/Editのdenyはbashサブプロセスに効かない。sandbox.filesystem.denyReadを併用 |
| statusLineが表示されない | 調べる場所スクリプトを手動実行 | 対処実行権限・stdout出力・disableAllHooksがtrueになっていないかを確認。debugはclaude --debug |
CLAUDE.mdが読まれない | 調べる場所/memory | 対処ワーキングディレクトリからの親ディレクトリ辿りでファイル場所を確認。claudeMdExcludes/CLAUDE_CODE_DISABLE_CLAUDE_MDSを確認 |
| 思考トークンが膨れる | 調べる場所MAX_THINKING_TOKENS + CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING | 対処適応的推論モデルでは予算が無視される場合がある。/effort lowまたはCLAUDE_CODE_DISABLE_THINKING=1 |
| 自動更新を止めたい | 調べる場所DISABLE_AUTOUPDATER + minimumVersion | 対処autoUpdatesChannel: "stable"で約1週間の遅延運用も可 |
| セッションが再開できない | 調べる場所--no-session-persistenceやCLAUDE_CODE_SKIP_PROMPT_HISTORYを確認 | 対処前セッションで保存が抑止されていた可能性。cleanupPeriodDaysの削除にも注意 |
セキュリティ・リスクチェック
設定を組むときにハマりやすい落とし穴を、要件別に短くまとめます。
- 秘匿情報の置き場所: APIキー・トークンは
settings.jsonに直書きせず、env経由+keychain/1Password CLI/direnv/apiKeyHelperで注入。.mcp.jsonも${VAR}展開で外出しする Read/Editのdenyはbashには効かない:.envを守りたければpermissions.denyに加え、sandbox.filesystem.denyReadやOSパーミッションを併用- Bashパターン制約は脆い:
curlのドメイン制限をBash(curl http://github.com/ *)で書いてもリダイレクトや変数展開で抜ける。URL制御はWebFetch(domain:...)+sandbox.network.allowedDomainsで実施 bypassPermissionsの保護範囲:.git/.claude/.vscode/.idea/.huskyは確認を残すが、それ以外は素通りする。VM・コンテナ以外での常用は避けるauto modeのallow/soft_deny上書き挙動: 両フィールドを設定するとデフォルトリスト全体が置き換わる。必ずclaude auto-mode defaultsで組み込みルールを出力してから編集する- managedとユーザーの配列マージ: 配列はマージされるので、ユーザーが
allowに追加することで組織のsoft_denyが例外扱いになるケースがある。回避不能な禁止はpermissions.denyで書く - MCPの
.mcp.json承認ゲート: プロジェクトスコープのMCPサーバーは初回プロンプトで承認が必要。CIで回すときはenableAllProjectMcpServersかenabledMcpjsonServersの明示指定を併用 - HTTP hooksの環境変数補間:
allowedEnvVarsを必ず指定し、managed側でhttpHookAllowedEnvVarsとallowedHttpHookUrlsを固定する CLAUDE_CODE_SUBPROCESS_ENV_SCRUB: エンタープライズではデフォルトON推奨。Linuxではps/pgrep/killがホストを見えなくなる副作用があるので、監視ツールはホスト側で動かすstrictKnownMarketplaces: 空配列[]で完全ロックダウン。承認プロセスが固まっていない段階では、ポリシー側は厳しめ・extraKnownMarketplacesで事前登録する運用が現実的
より深いセキュリティ設計はClaude Codeセキュリティガイドでも扱っています。
まとめ
Claude Codeの設定は項目数こそ多いものの、5階層(Managed / CLI / Local / Project / User)の優先順位とマージ規則を押さえれば「どこに書くか」は機械的に決まります。
settings.jsonはharnessの挙動(権限・モデル・hooks・MCP・statusLine・outputStyle・sandbox)を固定- 環境変数は秘匿情報と一時切り替えに限定。90種以上あるので用途別の索引としても使える
CLAUDE.mdはClaude本体の振る舞いを整えるメモリ。@fileとpathsで分割しコンテキストを節約- CLIフラグはセッション単位の上書きで、スクリプト・CIの主役
- 権限モードとoutputStyleはプリセット的な切り替え
- Managed層は組織のハード境界。
allowManaged*Onlyで「ユーザーが広げられない」境界を作る
個人用の~/.claude/settings.jsonとCLAUDE.mdを整え、次にプロジェクトごとに.claude/settings.jsonで固定し、組織ではmanaged層でハード境界を引く、という順で育てていくと破綻しにくい構成になります。上記3シナリオプリセットを叩き台にしつつ、自チームの運用ルールに合わせて削り足してみてください。
関連する記事
Claude Code をもっと見る →Claude Codeベストプラクティス — Anthropicが示す自走エージェントの設計原則と運用パターン
Claude Code Hooks完全ガイド — 9種類のHookと用途別の使い分け早見表
Claude Codeプラグイン(Plugins)完全ガイド — /pluginの使い方・マーケットプレイス・自作と配布
Claude Code settings.json完全ガイド — 全設定項目とpermissions設計
Claude Code MCPサーバー完全ガイド — 自作手順から人気サーバーまで網羅
Claude Codeの/goalコマンド — 完了条件を渡して目標達成まで自走させる仕組み