Claude Code settings.json 全設定リファレンス──「いつ・なぜ変えるか」の判断基準付き
Claude Code を使い始めて数週間。基本操作には慣れたが、
settings.jsonを開くと設定項目が多すぎて、何を触るべきか分からない——そんな状態ではないだろうか。
公式ドキュメントは英語で項目が羅列されているだけで、「この設定を、いつ、なぜ変えるのか」 の判断基準がない。この記事では、
settings.jsonの全設定項目を網羅し、各項目に「変えるべきタイミング」と「現場での実践例」を添えた。
前提:設定ファイルの 5 層構造
設定項目の解説に入る前に、Claude Code の設定がどこに配置され、どの順序で評価されるかを押さえておく。
優先度: Managed(最高) > CLI フラグ > Local > Project > User(最低) ~/.claude/settings.json ← User:全プロジェクト共通の個人設定 .claude/settings.json ← Project:チーム共有(git 管理) .claude/settings.local.json ← Local:個人実験用(gitignore) claude --model opus ← CLI フラグ:セッション単位の一時的な上書き /Library/Application Support/ ← Managed:IT 管理者がデプロイ ClaudeCode/managed-settings.json
| スコープ | 典型的な用途 | git 管理 |
|---|---|---|
| User | 言語設定、個人の好み、全プロジェクト共通の deny ルール | しない |
| Project | チームの lint ルール、MCP サーバー、共通 Hook | する |
| Local | 実験的な設定、個人の API キー関連 | しない |
| CLI フラグ |
--modelや --add-dirなど、セッション限りの上書き |
— |
| Managed | 組織のセキュリティポリシー、バイパス禁止 | IT 管理者が配布 |
重要: 配列設定(
allow、
denyなど)はスコープ間でマージされる。上位スコープが下位を「上書き」するのではなく、全スコープのルールが統合されて評価される。
チーム規模別のスコープ活用目安:
- 個人開発: User スコープのみで十分。Project に設定を置く必要はない
- 小チーム(3〜5人): Project スコープを git 管理し、チームの deny ルールと Hook を共有する
- 中規模(20人以上): Managed スコープによる IT ポリシー配布を検討する
- エンタープライズ(50人以上): Managed + MDM 配布の自動化が現実的な選択肢になる
設定ファイルの先頭に書くべき 1 行
すべての
settings.jsonの冒頭にこれを入れる。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json"
}
VS Code・Cursor で自動補完とバリデーションが有効になる。設定キーのタイポを防ぎ、利用可能な値の候補が表示される。この 1 行で設定ミスの大半が未然に防止できる。
カテゴリ 1:コア設定
日常的に最も触る機会が多い基本設定。
model
{
"model": "claude-sonnet-4-6"
}
| 項目 | 内容 |
|---|---|
| 型 | string |
| デフォルト | API プラン/サブスクリプションに依存 |
| 変えるべき時 | チーム全員のモデルを統一したい、コスト管理したい |
判断基準: 個人で使うなら
~/.claude/settings.json(User)に設定。チームで統一するなら
.claude/settings.json(Project)に。ただし、メンバーの実験を妨げないよう
availableModelsと組み合わせるのが現実的。
availableModels
{
"availableModels": ["sonnet", "haiku"]
}
| 項目 | 内容 |
|---|---|
| 型 | string[] |
| デフォルト | 全モデル利用可能 |
| 変えるべき時 | Opus の利用をコスト理由で制限したい |
判断基準: Managed スコープで設定すると組織全体でモデルを制限できる。Project スコープに入れると、そのプロジェクトのコスト上限を暗黙的に設定する効果がある。
language
{
"language": "japanese"
}
| 項目 | 内容 |
|---|---|
| 型 | string |
| デフォルト | 自動検出 |
| 変えるべき時 | 応答言語を固定したい |
判断基準: 日本語チームなら User スコープに入れておくと快適。英語ドキュメントのプロジェクトでは Project で
"english"を設定して上書きする手もある。
outputStyle
{
"outputStyle": "Explanatory"
}
| 項目 | 内容 |
|---|---|
| 型 | string |
| デフォルト | なし |
| 変えるべき時 | 出力形式をカスタマイズしたい(教育的、簡潔等) |
判断基準: 個人の好みの範囲なので User スコープに置く。プロジェクトで統一する必要はほぼない。
env
{
"env": {
"NODE_ENV": "development",
"BASH_DEFAULT_TIMEOUT_MS": "180000"
}
}
| 項目 | 内容 |
|---|---|
| 型 | object |
| デフォルト | なし |
| 変えるべき時 | シェルプロファイルに依存せず環境変数を固定したい |
判断基準: シェルの
.zshrcや
.bashrcに散らばせるより、ここに集約した方がチーム展開が容易。ただし API キーなどの秘密情報は 絶対にここに書かない。秘密情報は
apiKeyHelperを使う。
apiKeyHelper
{
"apiKeyHelper": "/usr/local/bin/get-claude-api-key.sh"
}
| 項目 | 内容 |
|---|---|
| 型 | string |
| デフォルト | なし |
| 変えるべき時 | API キーを動的に取得したい(Vault、1Password CLI 等) |
判断基準:
ANTHROPIC_API_KEYを
.envに書くのは危険。シークレットマネージャーから動的取得するスクリプトのパスをここに設定する。
cleanupPeriodDays
{
"cleanupPeriodDays": 14
}
| 項目 | 内容 |
|---|---|
| 型 | number |
| デフォルト | 30 |
| 変えるべき時 | ディスク容量が気になる、セッション履歴を早く消したい |
判断基準: デフォルトの 30 日で問題ないことがほとんど。ディスクが逼迫する CI 環境では短く設定する。
カテゴリ 2:パーミッション設定
最もインパクトが大きく、最初に設計すべきカテゴリ。セキュリティと開発効率のバランスを決める。
permissions.deny
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Bash(curl * | bash)",
"Bash(rm -rf *)"
]
}
}
| 項目 | 内容 |
|---|---|
| 型 | string[] |
| デフォルト | [] |
| 変えるべき時 | 初日に設定する。Claude に触らせたくないファイル・コマンドがある |
判断基準: deny ルールは 最優先で評価 される。他のスコープの allow で上書きできない。まず「何を絶対に許可してはいけないか」を書き出し、そこから設計する。
permissions.ask
{
"permissions": {
"ask": [
"Bash(git push *)",
"Bash(docker *)"
]
}
}
| 項目 | 内容 |
|---|---|
| 型 | string[] |
| デフォルト | [] |
| 変えるべき時 | 特定のコマンドで毎回確認を強制したい |
判断基準:
askは deny ほど厳しくないが、allow のように素通りもさせない中間ルール。
git pushや
dockerのように「実行はしたいが、毎回意識的に確認したい」コマンドに適している。評価順序は deny → ask → allow で、deny にマッチしなかったものが ask で引っかかる。
permissions.allow
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx prettier *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git status)"
]
}
}
| 項目 | 内容 |
|---|---|
| 型 | string[] |
| デフォルト | [] |
| 変えるべき時 | 毎回の確認プロンプトが煩わしいコマンドがある |
判断基準: 「Claude が毎回聞いてくるのが煩わしいが、安全なコマンド」を入れる。
npm run lintや
git diffは典型例。
git pushは allow ではなく ask に入れる方が安全。
パーミッションルールの構文
パターン構文を理解しておかないと、意図しないルールを書いてしまう。
# 基本形式 ToolName # 全操作を対象 ToolName(specifier) # 条件付き # Bash のパターン Bash(npm run *) # npm run で始まるコマンド(* は単語境界で分割) Bash(git * main) # git の後に何かがあり main で終わるコマンド Bash(ls*) # ls で始まる(単語境界なし、lsof もマッチする) # Read/Edit のパスパターン Read(./.env) # カレントディレクトリの .env(./ はカレントから相対) Read(/src/**/*.ts) # プロジェクトルートからの相対パス(/ で始める) Read(./secrets/**) # secrets 以下を再帰的に Read(~/.zshrc) # ホームディレクトリ(~ で始める) Read(//etc/passwd) # ファイルシステムルートの絶対パス(// で始める) # WebFetch のドメインパターン WebFetch(domain:github.com) # 特定ドメイン WebFetch(domain:*.npmjs.org) # ワイルドカードサブドメイン # MCP ツール mcp__github # GitHub MCP の全ツール mcp__puppeteer # Puppeteer MCP の全ツール(同上) mcp__puppeteer__puppeteer_navigate # Puppeteer の特定ツールのみ
permissions.additionalDirectories
{
"permissions": {
"additionalDirectories": ["../shared-libs/", "../docs/"]
}
}
| 項目 | 内容 |
|---|---|
| 型 | string[] |
| デフォルト | [] |
| 変えるべき時 | モノレポで隣のパッケージを参照する、ドキュメントが別ディレクトリにある |
判断基準: Claude Code はデフォルトでカレントディレクトリのみを作業対象とする。マルチパッケージ構成では、ここに参照先を追加する。
permissions.defaultMode
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
| 値 | 動作 |
|---|---|
"default" |
初回使用時にツールごとに確認 |
"acceptEdits" |
ファイル編集を自動承認 |
"plan" |
ファイル修正・コマンド実行不可(Plan モード) |
"dontAsk" |
/permissionsや allowルールで事前承認されたツールのみ実行 |
"bypassPermissions" |
すべての確認をスキップ(危険) |
判断基準: 個人開発なら
"acceptEdits"が快適。チーム共有設定には入れない方が安全。Managed スコープで
"dontAsk"を強制すると堅牢だが、開発速度は落ちる。
permissions.disableBypassPermissionsMode
{
"permissions": {
"disableBypassPermissionsMode": "disable"
}
}
| 項目 | 内容 |
|---|---|
| 型 |
"disable"または未設定 |
| 変えるべき時 |
--dangerously-skip-permissionsの使用を組織的に禁止したい |
判断基準: Managed スコープ専用と考えてよい。セキュリティポリシーが厳しい組織では必須。個人開発では不要。
カテゴリ 3:サンドボックス設定
パーミッションの deny ルールが 10 個を超えたら、サンドボックスの方が管理しやすい。
sandbox.enabled
{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true
}
}
| 項目 | 内容 |
|---|---|
| 型 | boolean |
| デフォルト | false |
| 変えるべき時 | deny ルールでは追いつかないセキュリティ要件がある |
判断基準: macOS では Apple Seatbelt、Linux では Landlock を使う OS レベルのサンドボックス。有効にすると、Claude のコマンド実行がサンドボックス内に制限される。
autoAllowBashIfSandboxed: trueにすると、サンドボックス内の Bash コマンドは確認なしで実行される。
sandbox.filesystem
{
"sandbox": {
"filesystem": {
"allowWrite": ["//tmp/build", "~/.kube"],
"denyWrite": ["//etc"],
"denyRead": ["~/.aws/credentials"]
}
}
}
パスプレフィックスの意味:
| プレフィックス | 意味 | 例 |
|---|---|---|
// |
絶対パス |
//tmp/build→ /tmp/build |
~/ |
ホームディレクトリ | ~/.kube |
/ |
設定ファイルからの相対パス | /build |
sandbox.network
{
"sandbox": {
"network": {
"allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],
"allowLocalBinding": true
}
}
}
| 項目 | 内容 |
|---|---|
allowedDomains |
許可するドメイン(ワイルドカード対応) |
allowLocalBinding |
ローカルポートバインドの許可 |
判断基準: ネットワーク制限は強力だが、設定漏れで
npm installや
git cloneが失敗する。まず
allowedDomainsを広めに設定し、段階的に絞る。
カテゴリ 4:Hooks 設定
ツール実行の前後にカスタム処理を挟む仕組み。自動化のキーポイント。
基本構造
{
"hooks": {
"イベント名": [
{
"matcher": "ツール名パターン",
"hooks": [
{
"type": "command",
"command": "実行するコマンド"
}
]
}
]
}
}
主要イベント一覧
| イベント | 発火タイミング | matcher 対象 | 主な用途 |
|---|---|---|---|
SessionStart |
セッション開始時 |
startup, resume, clear, compact |
初期化、コンテキスト再注入 |
PreToolUse |
ツール実行前 | ツール名 | 危険操作のブロック |
PostToolUse |
ツール実行後(成功) | ツール名 | 自動フォーマット、通知 |
Notification |
通知発生時 |
permission_prompt, idle_prompt, auth_success等 |
デスクトップ通知 |
Stop |
応答完了時 | なし | タスク完了チェック |
UserPromptSubmit |
プロンプト送信時 | なし | 入力バリデーション |
ConfigChange |
設定変更時 |
user_settings, project_settings |
設定変更の監査 |
Hook の type
| type | 動作 | ユースケース |
|---|---|---|
command |
シェルコマンド実行 | フォーマッター実行、通知送信 |
http |
HTTP POST | 外部サービス連携、Slack 通知 |
prompt |
単一ターン LLM 評価 | コード品質チェック |
agent |
マルチターン検証 | テスト実行、複合的な検証 |
実践例:自動フォーマット
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs npx prettier --write 2>/dev/null || true"
}
]
}
]
}
}
判断基準: PostToolUse で Prettier を走らせると、Claude が編集するたびに自動フォーマットされる。レビュー時のフォーマット差分が解消される。ただし、大量のファイルを連続編集するタスクではフック実行のレイテンシが加算されるため、体感で遅く感じることがある。
実践例:デスクトップ通知(macOS)
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
実践例:コンテキスト圧縮後のリマインダー
{
"hooks": {
"SessionStart": [
{
"matcher": "compact",
"hooks": [
{
"type": "command",
"command": "echo 'Reminder: Use Bun, not npm. Run bun test before committing.'"
}
]
}
]
}
}
判断基準: 長時間作業でコンテキスト圧縮が発生すると、初期の指示が失われることがある。
compactマッチャーで再注入すると、この問題を防げる。
終了コードの意味
Hook スクリプトの終了コードで Claude の動作を制御できる。ただし イベントによってブロック可否が異なる 点に注意。
| コード | 効果 |
|---|---|
0 |
処理を続行。stdout は JSON として解析される(UserPromptSubmitと SessionStartのみ Claude のコンテキストに追加。他は verbose モードで表示) |
2 |
ブロック可能なイベントでは処理をブロック。stderr が Claude にフィードバックされる |
| その他 | 処理を続行。stderr は verbose モード(Ctrl+O)で表示されるのみ |
exit 2 でブロックできるイベント:
PreToolUse、
PermissionRequest、
UserPromptSubmit、
Stop、
SubagentStop、
ConfigChange
exit 2 でもブロックできないイベント:
PostToolUse(既に実行済み)、
Notification、
SessionStart、
SessionEndなど。これらでは stderr が表示されるのみ。
#!/bin/bash # PreToolUse フックの例:危険なコマンドをブロック INPUT=$(cat) COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty') if echo "$COMMAND" | grep -qE "drop table|truncate|rm -rf /"; then echo "Blocked: destructive command detected" >&2 exit 2 # ブロック fi exit 0 # 許可
disableAllHooks / allowManagedHooksOnly
{
"disableAllHooks": false,
"allowManagedHooksOnly": false
}
判断基準:
disableAllHooksはデバッグ時に一時的に使う。
allowManagedHooksOnlyは Managed スコープ専用で、IT 管理者が承認した Hook のみ許可する。
カテゴリ 5:MCP サーバー設定
MCP(Model Context Protocol)サーバーの管理に関する設定。
enableAllProjectMcpServers
{
"enableAllProjectMcpServers": true
}
| 項目 | 内容 |
|---|---|
| 型 | boolean |
| デフォルト | false |
| 変えるべき時 |
.mcp.jsonのサーバーを毎回確認プロンプトなしで有効化したい |
判断基準: 信頼できるリポジトリでのみ
trueにする。不明なリポジトリを clone して
trueになっていると、悪意あるMCPサーバーが自動起動するリスクがある。
allowedMcpServers / deniedMcpServers
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverUrl": "https://mcp.company.com/*" },
{ "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] }
],
"deniedMcpServers": [
{ "serverName": "dangerous-server" }
]
}
3 つのマッチ方法がある。
| 方法 | 対象 | 例 |
|---|---|---|
serverName |
サーバー名 | "github" |
serverUrl |
リモートサーバー URL | "https://*.company.com/*" |
serverCommand |
stdio サーバーの起動コマンド | ["npx", "-y", "package"] |
判断基準: Managed スコープに入れると、組織で許可された MCP サーバーのみ使用可能になる。
serverCommandは完全一致なので、引数の順序まで正確に書く必要がある。
カテゴリ 6:UI・表示設定
使い勝手の微調整。優先度は低いが、長時間使うなら設定する価値がある。
| キー | 型 | デフォルト | 説明 |
|---|---|---|---|
showTurnDuration |
boolean |
true |
各ターンの所要時間を表示 |
spinnerTipsEnabled |
boolean |
true |
ローディング中のヒント表示 |
terminalProgressBarEnabled |
boolean |
true |
プログレスバー表示 |
prefersReducedMotion |
boolean |
false |
アニメーション削減 |
respectGitignore |
boolean |
true |
@ピッカーで .gitignoreを尊重 |
{
"showTurnDuration": true,
"prefersReducedMotion": false,
"respectGitignore": true
}
判断基準: 大半のケースでデフォルト値のまま十分に機能する。
respectGitignore: falseにすると
node_modules内のファイルも
@で参照できるが、ノイズが増えるので非推奨。
statusLine
{
"statusLine": {
"type": "command",
"command": "echo \"branch: $(git branch --show-current) | cost: $CLAUDE_SESSION_COST\""
}
}
判断基準: ステータスラインに Git ブランチやセッションコストを表示できる。長時間セッションでコスト管理したいなら設定する価値がある。
カテゴリ 7:認証・クラウドプロバイダー設定
{
"forceLoginMethod": "console",
"forceLoginOrgUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
| キー | 説明 |
|---|---|
forceLoginMethod |
"claudeai"または "console"でログイン方式を制限 |
forceLoginOrgUUID |
組織 UUID を自動選択(複数組織に所属する場合) |
awsAuthRefresh |
AWS SSO のリフレッシュコマンド |
判断基準: 組織で API Console を使う場合は
"console"を Managed スコープに設定。個人の Claude Pro/Max サブスクリプションなら不要。
カテゴリ 8:高度な設定
attribution
{
"attribution": {
"commit": "",
"pr": ""
}
}
判断基準: コミットメッセージや PR に
Co-Authored-By: Claudeを付けるかどうか。空文字を設定すると帰属表示が消える。チームポリシーに従う。
alwaysThinkingEnabled
{
"alwaysThinkingEnabled": true
}
判断基準: 拡張思考(Extended Thinking)をデフォルトで有効化する。複雑なタスクでは推論品質が上がるが、簡単なタスクではレイテンシが増える。Option+T でトグルもできるので、デフォルト有効にしておいて問題ない。
plansDirectory
{
"plansDirectory": "./plans"
}
判断基準: Plan モードで生成される計画ファイルの保存先。デフォルトは
./plans。チームでレビューする場合は git 管理下のディレクトリに設定する。
teammateMode
{
"teammateMode": "auto"
}
| 値 | 動作 |
|---|---|
"auto" |
環境に応じて自動選択 |
"in-process" |
同一プロセス内でエージェントチーム実行 |
"tmux" |
tmux セッションで並列実行 |
判断基準: エージェントチーム(
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)を使う場合のみ関係する。tmux がインストール済みなら
"tmux"の方が視覚的にわかりやすい。
主要な環境変数クイックリファレンス
settings.jsonの
envセクションか、シェルで設定する。現場で特に使用頻度が高いものを厳選した。
モデル・出力制御
| 変数 | デフォルト | 用途 |
|---|---|---|
ANTHROPIC_MODEL |
- | デフォルトモデルの上書き |
CLAUDE_CODE_MAX_OUTPUT_TOKENS |
32000 |
最大出力トークン(上限 64000。長い生成物が切れる場合に増やす) |
CLAUDE_CODE_EFFORT_LEVEL |
"high" |
推論レベル("low", "medium", "high") |
CLAUDE_CODE_SUBAGENT_MODEL |
- | サブエージェントのモデル上書き |
Bash 制御
| 変数 | デフォルト | 用途 |
|---|---|---|
BASH_DEFAULT_TIMEOUT_MS |
120000 |
Bash コマンドのデフォルトタイムアウト |
BASH_MAX_TIMEOUT_MS |
600000 |
Bash コマンドの最大タイムアウト |
BASH_MAX_OUTPUT_LENGTH |
- | 出力の最大文字数 |
機能フラグ
| 変数 | デフォルト | 用途 |
|---|---|---|
CLAUDE_CODE_DISABLE_AUTO_MEMORY |
0 |
自動メモリ無効化 |
CLAUDE_CODE_DISABLE_FAST_MODE |
- | Fast モード無効化 |
CLAUDE_CODE_SIMPLE |
0 |
最小モード(Bash・ファイルツールのみ) |
ENABLE_TOOL_SEARCH |
"auto" |
MCP ツール検索("auto:5"で閾値変更可) |
プライバシー
| 変数 | デフォルト | 用途 |
|---|---|---|
DISABLE_TELEMETRY |
0 |
テレメトリのオプトアウト |
DISABLE_ERROR_REPORTING |
0 |
Sentry エラー報告のオプトアウト |
CLAUDE_CODE_HIDE_ACCOUNT_INFO |
0 |
UI でのメール・組織情報を非表示 |
DISABLE_COST_WARNINGS |
0 |
コスト警告を無効化 |
クラウドプロバイダー
| 変数 | 用途 |
|---|---|
CLAUDE_CODE_USE_BEDROCK |
AWS Bedrock を有効化 |
CLAUDE_CODE_USE_VERTEX |
Google Vertex AI を有効化 |
CLAUDE_CODE_USE_FOUNDRY |
Foundry を有効化 |
ANTHROPIC_API_KEY |
Anthropic API キー |
判断基準: 環境変数と
settings.jsonの使い分けは明確にする。永続的に設定したい項目は settings.json の env、
一時的に切り替えたい項目はシェルで設定する。
現場でハマる罠と対策
罠 1:deny ルールが「効かない」
症状:
denyに
Read(./.env)を入れたのに、Claude が
.envの内容を読んでいる。
原因: Claude が絶対パスでアクセスしている。
./.envは相対パスのルールなので、
//Users/me/project/.envにはマッチしない。
対策: 両方のパターンを deny に入れる。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(//.env)",
"Read(//.env.*)"
]
}
}
罠 2:Hook が発火しない
症状:
PostToolUseHook を設定したが、何も起きない。
原因: 以下のいずれか。
-
matcher
のツール名が間違っている(大文字小文字は区別される) - Hook スクリプトに実行権限がない
-
disableAllHooks: true
が上位スコープで設定されている
対策:
claude --debugで起動すると、Hook の発火状況が詳細に表示される。
claude --debug # Hook の実行ログが出力される
罠 3:スコープの優先順位を誤解する
症状: User スコープの
allowで許可したのに、Project スコープの
denyで拒否される。
原因: これは正しい動作。deny は最優先で評価される。
対策: 設定の意図を理解する。deny はどのスコープに書いても最優先。「Project で deny しているが自分だけ allow したい」場合は、Local スコープ(
.claude/settings.local.json)に allow を書いても効かない。deny を解除するしかない。
罠 4:MCP サーバーが起動しない
症状:
.mcp.jsonにサーバーを追加したが、利用できない。
原因:
enableAllProjectMcpServersが
false(デフォルト)で、明示的な承認が必要。
対策: Claude Code 内で
/mcpコマンドを実行し、サーバーを有効化する。信頼できるプロジェクトなら
enableAllProjectMcpServers: trueを検討する。
インタラクティブコマンドで設定を管理する
settings.jsonを直接編集するだけでなく、Claude Code の REPL 内でインタラクティブに設定を変更できる。
| コマンド | 説明 |
|---|---|
/config |
設定 TUI(テキスト UI)を開く |
/permissions |
パーミッション管理インターフェース |
/hooks |
フック設定メニュー |
/mcp |
MCP サーバーの状態確認・認証 |
/allowed-tools add Edit |
ツール権限をその場で追加 |
判断基準: 初回の設計は
settings.jsonを直接書く方が効率的。運用中の微調整は
/configや
/permissionsの方が手早い。
チーム導入:最初の 3 ステップ
チームに Claude Code の設定を導入する場合、以下のステップで段階的に進める。
-
Project スコープの— deny ルール(
settings.json
をリポジトリに入れる.env
保護)と PostToolUse Hook(フォーマッター)を最低限設定し、git commit
する -
User スコープの推奨テンプレートを共有する— Wiki やオンボーディングドキュメントに
~/.claude/settings.json
のサンプルを載せる。強制ではなく推奨として配布する -
20 人を超えたら Managed スコープを検討する—
disableBypassPermissionsMode
やallowedMcpServers
など、個人で解除できない組織ポリシーが必要になるタイミングが来る
まとめ:最初に設定する 5 つの項目
設定項目は多いが、最初に触るべきはこの 5 つに絞れる。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"language": "japanese",
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)"
],
"allow": [
"Bash(npm run *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git status)"
]
}
}
-
— エディタ補完を有効化。設定ミスの半分を防ぐ
$schema
-
— 応答言語を固定
language
-
— 秘密情報の保護。最優先で設定する
deny
-
— 安全なコマンドの確認スキップ。日常の摩擦を減らす
allow
- Hook(PostToolUse → フォーマッター)— 自動フォーマットでレビュー品質を上げる
残りは「痛みが出てから追加する」で十分。設定は増やすより減らす方が難しい。