Claude CodeのWebFetchを全ドメインで自動許可する

公開日:
目次

Claude CodeでWebFetchを使うたびにドメインごとの許可を求められて面倒だったので、Hooksを使って自動許可する方法を調べました。備忘録です。

domain:* が効かない問題

Claude Codeには settings.json でツールの許可設定ができます。

.claude/settings.local.json
{
  "permissions": {
    "allow": [
      "WebFetch(domain:*)"
    ]
  }
}

ワイルドカードで全ドメインを許可できそうに見えますが、実際にはドメインごとに確認ダイアログが出てきます。許可すると個別のエントリ( WebFetch(domain:github.com) など)が追加されていきます。

これはGitHubのissue #11972で報告されている既知のバグです。[1]

Hooksで自動許可する

確実な解決策はHooksを使う方法です。 PreToolUsePermissionRequest の両方のフックを設定することで、確認なしでWebFetchが通るようになります。

フックスクリプトを作成

まず許可を返すスクリプトを作成します。hooksディレクトリがない場合は作成してください。

mkdir -p ~/.claude/hooks

次に、以下のシェルスクリプトを作ります。このスクリプトがフックとして実行されます。

~/.claude/hooks/auto_allow_web.sh
#!/bin/bash
jq -n '{
  hookSpecificOutput: {
    hookEventName: "PreToolUse",
    permissionDecision: "allow",
    permissionDecisionReason: "Auto-approved by hook"
  }
}'

実行権限を付与します。

chmod +x ~/.claude/hooks/auto_allow_web.sh

settings.jsonにフックを登録

~/.claude/settings.json に以下を追加します。プロジェクト単位にしたい場合は .claude/settings.local.json に書いてください。

~/.claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "WebFetch|WebSearch",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/auto_allow_web.sh",
            "timeout": 5
          }
        ]
      }
    ],
    "PermissionRequest": [
      {
        "matcher": "WebFetch|WebSearch",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/auto_allow_web.sh",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

PreToolUse はツール実行前のインターセプト、 PermissionRequest はパーミッションダイアログが出る直前のインターセプトです。両方設定しておくことで確実に自動許可されます。

セキュリティの考慮

この設定をすると、Claude Codeが任意のURLにアクセスできるようになります。悪意のあるプロンプトや不審なリクエストには注意してください。信頼できるプロジェクトや個人の開発環境での利用をおすすめします。

脚注
  1. https://github.com/anthropics/claude-code/issues/11972 ↩︎