Claude Code を使っていて「毎回コマンドの許可を求められるのが面倒」「設定ファイルがあるらしいけど何を書けばいいかわからない」と感じていませんか?

settings.json を設定するだけで、確認ダイアログの煩わしさが激減し、セキュリティも保ちつつ快適に開発できるようになります。この記事では、まずコピペで使えるおすすめ設定を紹介し、その後で各項目の意味や応用設定を詳しく解説します。


    おすすめの settings.json 設定(コピペ用)

    まずは結論から。以下の設定はグローバル(~/.claude/settings.json)に置いても安全な内容に絞っています。

    {
      "env": {
        "CLAUDE_CODE_LANGUAGE": "ja",
        "BASH_DEFAULT_TIMEOUT_MS": "300000",
        "BASH_MAX_TIMEOUT_MS": "1200000",
        "ENABLE_TOOL_SEARCH": "true",
        "DISABLE_COST_WARNINGS": "1"
      },
      "cleanupPeriodDays": 30,
      "enableAllProjectMcpServers": false,
      "includeCoAuthoredBy": true,
      "permissions": {
        "disableBypassPermissionsMode": "disable",
        "allow": [
          "Bash(grep:*)", "Bash(find:*)", "Bash(wc:*)", 
          "Bash(ls:*)", "Bash(echo:*)", "Bash(diff:*)", 
          "Bash(tree:*)", "Bash(file:*)", "Bash(which:*)", 
          "Bash(pwd:*)", "Bash(date:*)", "Bash(mkdir:*)", 
          "Bash(cp:*)", "Bash(mv:*)", "Bash(touch:*)", 
          "Bash(unzip:*)", "Bash(tar:*)", "Bash(zip:*)", 
          "Bash(git:*)", "Bash(node --version)", "Bash(npm:*)", 
          "Bash(npx:*)", "Bash(php:*)", "Bash(composer:*)", 
          "Bash(jq:*)", "Bash(sed:*)", "Bash(awk:*)", 
          "Bash(sort:*)", "Bash(xargs:*)", "Bash(python3 --version)", 
          "Bash(pip:*)", "Read(<strong>)", "Edit(./</strong>)", 
          "Edit(!vendor/<strong>)", "Edit(!.git/</strong>)", 
          "Write(./<strong>)", "Write(!vendor/</strong>)", "Write(!.git/**)", 
          "MultiEdit(./**)", "WebFetch", "WebSearch", 
          "mcp__context7__*", "mcp__github__get_*", 
          "mcp__github__list_*", "mcp__github__search_*"
        ],
        "deny": [
          "Bash(sudo *)", "Bash(su *)", "Bash(curl *)", 
          "Bash(wget *)", "Bash(nc *)", "Bash(ncat *)", 
          "Bash(telnet *)", "Bash(ssh *)", "Bash(scp *)", 
          "Bash(security *)", "Bash(pbcopy *)", "Bash(pbpaste *)", 
          "Bash(open *)", "Bash(rm *)", "Bash(rm -r *)", 
          "Bash(rm -rf *)", "Bash(git push --force *)", "Bash(git reset --hard *)", 
          "Read(./.env)", "Edit(./.env)", "Write(./.env)", 
          "Read(./.env.*)", "Edit(./.env.*)", "Write(./.env.*)", 
          "Bash(* .env*)", "Bash(* ~/.ssh/*)", "Bash(* ~/.aws/*)", 
          "Bash(* ~/.config/gh/*)", "Bash(* ~/.git-credentials)", "Bash(* ~/.netrc)", 
          "Bash(* ~/.npmrc)", "Read(~/.ssh/<strong>)", "Read(~/.aws/</strong>)", 
          "Read(~/.git-credentials)", "Read(~/.config/gh/**)", "Read(~/.netrc)", 
          "Read(~/.npmrc)", "Edit(~/.zshrc)", "Write(~/.zshrc)", 
          "Edit(~/.bashrc)", "Write(~/.bashrc)"
        ]
      },
      "hooks": {
        "Notification": [
          {
            "matcher": "",
            "hooks": [
              {
                "type": "command",
                "command": "afplay /System/Library/Sounds/Glass.aiff"
              }
            ]
          }
        ],
        "Stop": [
          {
            "matcher": "",
            "hooks": [
              {
                "type": "command",
                "command": "afplay /System/Library/Sounds/Glass.aiff"
              },
              {
                "type": "command",
                "command": "osascript -e 'display notification \"テストとコミットを確認してください\" with title \"Claude Code\" subtitle \"タスク完了\"'"
              }
            ]
          }
        ]
      }
    }
    

    使い方

    ~/.claude/settings.json にこの内容をコピペするだけです。ファイルが存在しない場合は新規作成してください。

    # ディレクトリがなければ作成
    mkdir -p ~/.claude
    
    # エディタで開く(VS Code の場合)
    code ~/.claude/settings.json
    

    カスタマイズのポイント

    上記の設定は macOS + WordPress/Node.js, Python 開発 を想定しています。開発環境に合わせて以下を調整してください。

    • Rust 開発者な"Bash(cargo:*)", "Bash(rustc:*)" を追加
    • Windows ユーザーなhooks 内の afplayosascript は使えないので、代わりに PowerShell の通知コマンドに置き換えてください
    • git操作をClaude Codeに任せたくない場合な"Bash(git:*)"allow から外し、deny"Bash(git commit:*)", "Bash(git push:*)" 等を追加

    settings.json の配置場所と優先順位

    3種類の設定ファイル

    settings.json は配置する場所によって適用範囲が変わります。

    ファイルパス 適用範囲 用途
    ~/.claude/settings.json 全プロジェクト共通
    (グローバル)
    どのプロジェクトでも>
    使う共通設定
    .claude/settings.json プロジェクト単位
    (ローカル)
    チームで共有する設定
    (Git管理可能)
    .claude/settings.local.json プロジェクト単位
    (個人用ローカル)
    個人だけの設定
    (.gitignore推奨)

    グローバルとローカルの使い分け

    グローバルに書くべき設定として、
    git, grep, ls などの安全なコマンド許可、通知用の hooks 設定、env の言語設定やタイムアウトが挙げられます。どのプロジェクトでも共通して必要になる設定がこれに該当します。

    プロジェクトローカルに書くべき設定としては、
    npm run formatnpm run lint のような PostToolUse フック、プロジェクト固有の MCP サーバー許可、.envsecrets/ への Read 禁止設定などがあります。プロジェクトごとにコマンドや構成が異なるものはローカルに書きましょう。

    settings.json と settings.local.json の違い

    .claude/settings.json はGit管理に含めることができるため、チームメンバー全員で同じ設定を共有できます。一方 .claude/settings.local.json.gitignore に追加して個人だけの設定を保持する用途に使います。

    例えば、チーム共通で「rm -rf を禁止する」設定は .claude/settings.json に書き、個人的に使いたい通知音の設定は .claude/settings.local.json に書く、といった使い分けです。

    設定の優先順位

    複数の設定ファイルが存在する場合、以下の順番で適用されます(上が優先)。

    1. エンタープライズポリシー
    2. コマンドライン引数
    3. ローカルプロジェクト設定(.claude/settings.local.json
    4. 共有プロジェクト設定(.claude/settings.json
    5. ユーザー設定(~/.claude/settings.json

    同じキーが複数の設定ファイルに存在する場合は、より上位のファイルの値が採用されます。


    settings.json の各項目を解説

    env(環境変数)

    Claude Code 実行時に設定される環境変数です。

    "env": {
      "CLAUDE_CODE_LANGUAGE": "ja",
      "BASH_DEFAULT_TIMEOUT_MS": "300000",
      "BASH_MAX_TIMEOUT_MS": "1200000",
      "ENABLE_TOOL_SEARCH": "true",
      "DISABLE_COST_WARNINGS": "1"
    }
    
    変数名 説明 推奨値
    CLAUDE_CODE_LANGUAGE UI・応答の言語 "ja"(日本語)
    BASH_DEFAULT_TIMEOUT_MS Bashコマンドの
    デフォルトタイムアウト
    "300000"(5分)
    BASH_MAX_TIMEOUT_MS Bashコマンドの
    最大タイムアウト
    "1200000"(20分)
    ENABLE_TOOL_SEARCH ツール検索機能を有効化 "true"
    DISABLE_COST_WARNINGS コスト警告を非表示にする "1"
    CLAUDE_CODE_ENABLE_TELEMETRY テレメトリの有効/無効 "0"(無効)
    DISABLE_AUTOUPDATER 自動更新を無効化 "1"

    permissions(権限設定)

    Claude Code がどのコマンドやファイル操作を実行できるかを制御します。

    "permissions": {
      "allow": [ ... ],
      "deny": [ ... ]
    }
    

    allow で使えるパターン

    パターン 説明
    Bash(コマンド:*) 特定コマンドの
    全引数を許可
    "Bash(git:*)"
    Bash(コマンド 引数) 特定の引数のみ許可 "Bash(npm run lint)"
    Read(**) 全ファイルの
    読み取り許可
    -
    Edit(./**) カレントディレクトリ
    配下の編集
    -
    Edit(!パス/<strong>) 特定パスを
    編集対象から除外
    "Edit(!vendor/</strong>)"
    Write(./**) カレントディレクトリ
    配下への書き込み
    -
    MultiEdit(./**) 複数箇所の同時編集 -
    WebFetch Web ページの取得 -
    WebSearch Web 検索 -
    WebFetch(domain:ドメイン名) 特定ドメインのみ
    Fetch 許可
    "WebFetch(domain:example.com)"

    deny で使えるパターン

    allow と同じパターンが使えます。deny は allow より優先されるため、allow で広く許可しつつ deny で危険な操作だけをピンポイントで禁止する運用が可能です。

    グローバルに allow して安全なコマンド一覧

    読み取り・表示系(リスクほぼゼロ): grep, find, wc, ls, pwd, echo, which, date, file, diff, tree

    ※ cat / head / tail / less は Claude Code の Read ツールで代替できるため、allow には含めていません。Bash 経由で機密ファイルを読まれるリスクを避けるのが目的です(grep ~/.ssh/id_rsa のような用途を防ぐため)。

    ファイル操作系(低リスク): mkdir, cp, mv, touch, unzip, tar, zip, chmod
    開発ツール系(要注意): git, npm, npx, jq, sed, awk, sort, xargs

    グローバルの deny に入れるべきコマンド

    macOS 固有: osascript(任意), security, pbcopy, pbpaste, open
    削除・強制操作系: rm *, rm -r *, rm -rf *(rm -rf / だけでは不十分)
    権限昇格: sudo *, su *
    機密ファイル保護(Bash 経由): Bash(* .env*), Bash(* ~/.ssh/*), Bash(* ~/.aws/*) など
    機密ファイル保護(Read/Edit/Write): .env, ~/.ssh/<strong>, ~/.aws/</strong>, ~/.npmrc など
    ネットワーク系: curl, wget, nc, ncat, telnet, ssh, scp

    rm 自体はプロジェクトローカルで必要に応じて許可するのが安全です。

    disableBypassPermissionsMode(全権限バイパスを無効化)

    "disableBypassPermissionsMode": "disable"
    

    "disable" に設定すると、--dangerously-skip-permissions オプションによる全権限バイパスを無効化します。CI 等でスキップしたい場合は削除してください。

    hooks(フック)

    特定のイベントが発生したときに自動実行されるコマンドを設定します。

    "hooks": {
      "イベント名": [
        {
          "matcher": "マッチ条件",
          "hooks": [
            {
              "type": "command",
              "command": "実行するコマンド"
            }
          ]
        }
      ]
    }
    

    主なイベント一覧

    イベント名 発火タイミング
    Stop Claude Code のタスクが完了したとき
    Notification コマンド承認待ち・60秒間の入力待ち
    PermissionRequest コマンド実行の承認を求めるとき
    PostToolUse コマンド実行やファイル編集の後
    PreToolUse コマンド実行やファイル編集の前

    matcher の使い方

    matcher を空文字 "" にすると主要なイベントにマッチします。特定の条件に限定したい場合は値を指定します。

    {
      "matcher": "Edit|Write|MultiEdit",
      "hooks": [
        {
          "type": "command",
          "command": "npm run format"
        }
      ]
    }
    

    上記の例では、ファイル編集系のツール(Edit / Write / MultiEdit)が使われた後にだけ npm run format が実行されます。

    hooks の注意点

    hooks 内の command は1つのオブジェクトにつき1つだけです。複数のコマンドを実行したい場合は、hooks 配列に複数のオブジェクトを並べます。

    "hooks": [
      { "type": "command", "command": "コマンド1" },
      { "type": "command", "command": "コマンド2" }
    ]
    

    cleanupPeriodDays(クリーンアップ期間)

    "cleanupPeriodDays": 30
    

    古い会話履歴やキャッシュを自動削除するまでの日数です。デフォルトは30日です。長く保持したい場合は 60 などに変更します。

    enableAllProjectMcpServers(MCP サーバー制御)

    "enableAllProjectMcpServers": false
    

    プロジェクト配下の .mcp.json に定義された MCP サーバーを自動承認するかどうかを制御します。false にすると、プロジェクトごとの MCP サーバーは毎回確認ダイアログが表示されます。信頼できないリポジトリを開いたときの自動実行を防ぐため、false 推奨。

    includeCoAuthoredBy(共著者表記)

    "includeCoAuthoredBy": true
    

    true に設定すると、git コミットメッセージに Co-authored-by: Claude <claude@anthropic.com> が自動付与されます。AI との共同作業であることを明示したい場合に有効です。

    enabledPlugins(プラグイン有効化)

    "enabledPlugins": {
      "feature-dev@claude-plugins-official": true,
      "security-guidance@claude-plugins-official": true
    }
    

    公式・サードパーティのプラグインを有効化する設定です。利用可能なプラグインはバージョンによって異なります。

    【初心者向け】Claude Code プラグインの導入ガイド - おすすめプラグインと設定方法 Claude Code のプラグイン導入方法を初心者向けに解説。feature-dev、commit-commands、security-guidance など、開発効率を上げるおすすめプラグインの使い方と設定方法を紹介します。  続きを読む

    応用設定

    基本設定に慣れてきたら、さらに便利な応用設定も試してみましょう。

    statusLine(コンテキスト使用率の表示)

    Claude Code のチャット入力欄の下にステータス情報を表示する機能です。コンテキストウィンドウの消費率を表示しておくと、auto-compact(自動圧縮)が走る前に対処できます。

    ステップ1: スクリプトを作成

    cat << 'EOF' > ~/.claude/statusline.sh
    #!/bin/bash
    input=$(cat)
    CONTEXT_SIZE=$(echo "$input" | jq -r '.context_window.context_window_size')
    USAGE=$(echo "$input" | jq '.context_window.current_usage')
    
    if [ "$USAGE" != "null" ] && [ "$CONTEXT_SIZE" != "null" ] && [ "$CONTEXT_SIZE" != "0" ]; then
        CURRENT=$(echo "$USAGE" | jq '.input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens')
        PERCENT=$((CURRENT * 100 / CONTEXT_SIZE))
        echo "Context: ${PERCENT}%"
    else
        echo "Context: -"
    fi
    EOF
    chmod +x ~/.claude/statusline.sh
    

    ステップ2: settings.json に追加

    "statusLine": {
      "type": "command",
      "command": "~/.claude/statusline.sh"
    }
    

    PostToolUse フック(自動 lint / format)

    ファイル編集後に自動で lint や format を実行する設定です。CLAUDE.md にルールを書いても無視されることがありますが、hooks なら確実に実行されます。

    プロジェクトごとにコマンドが異なるため、プロジェクトローカル.claude/settings.json に書くのがおすすめです。

    {
      "hooks": {
        "PostToolUse": [
          {
            "matcher": "Edit|Write|MultiEdit",
            "hooks": [
              {
                "type": "command",
                "command": "npm run format"
              }
            ]
          }
        ]
      }
    }
    

    機密ファイルの Read 禁止

    .env ファイルなどに API キーが含まれている場合、Claude Code による読み取りを禁止しておくと安心です。

    {
      "permissions": {
        "deny": [
          "Read(./.env)",
          "Read(./.env.*)",
          "Read(./secrets/**)",
          "Read(./config/credentials.json)"
        ]
      }
    }
    

    MCP サーバーの自動承認

    MCP(Model Context Protocol)サーバーを使っている場合、参照系の操作は自動承認しておくと毎回の確認が不要になります。

    {
      "permissions": {
        "allow": [
          "WebFetch",
          "WebSearch",
          "mcp__context7__*",
          "mcp__github__get_*",
          "mcp__github__list_*",
          "mcp__github__search_*"
        ]
      }
    }
    

    まとめ

    Claude Code の settings.json を設定することで得られるメリットは大きく3つあります。

    1つ目は作業効率の向上です。
    安全なコマンドを事前に許可しておくことで、毎回の確認ダイアログから解放されます。

    2つ目はセキュリティの確保です。
    deny で危険なコマンドを明示的に禁止し、機密ファイルへのアクセスを制限することで、意図しない事故を防げます。

    3つ目は通知による見逃し防止です。
    hooks を設定しておけば、タスク完了や承認待ちを通知で知らせてくれるため、待ち時間を有効活用できます。

    まずは本記事のおすすめ設定をコピペして試してみてください。使いながら自分の開発スタイルに合わせて調整していくのがベストです。


    関連記事

    Vibe Codingのワークフロー 準備編3 - CLAUDE.mdの作成と最適化設定 CLAUDE.md設定と最適化テクニック: Claude Codeが英語で応答する問題を解決。CLAUDE.mdの正しい作成方法、日本語設定、段階的テスト駆動開発、継続的記録システムの実装方法を実例付きで解説。settings.json推奨設定も公開。  続きを読む 【初心者向け】Claude Code プラグインの導入ガイド - おすすめプラグインと設定方法 Claude Code のプラグイン導入方法を初心者向けに解説。feature-dev、commit-commands、security-guidance など、開発効率を上げるおすすめプラグインの使い方と設定方法を紹介します。  続きを読む

    参考リンク