1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeのパーミッション設定が効かない6つの罠(GitHub Issue回答から学んだ)

1
Last updated at Posted at 2026-04-01

今週GitHub Issueで10件以上のパーミッション関連の質問に回答した。同じパターンで困っている人が多い。

罠1: allowがaskを無効化する(17リアクション)

{
  "permissions": {
    "allow": ["Bash(*)"],
    "ask": ["Bash(rm *)"]
  }
}

期待: 安全なコマンドは自動許可、rmだけ確認。
実際: 全コマンドが自動許可。askは完全に無視される。 (#6527)

回避策: PreToolUseフックで危険コマンドをexit 2でブロック:

COMMAND=$(cat | jq -r '.tool_input.command // empty' 2>/dev/null)
if echo "$COMMAND" | grep -qE 'rm\s+(-[rf]+\s+)*(\/|~|\.\./)'; then
    echo "BLOCKED: rm on sensitive path" >&2
    exit 2
fi

罠2: 末尾ワイルドカードが引数なしにマッチしない

{ "permissions": { "allow": ["Bash(ssh * uptime *)"] } }

ssh host uptime -s → 許可。ssh host uptime確認ダイアログが出る。 末尾の*は1文字以上を要求し、空文字にマッチしない。(#36873)

罠3: WindowsでEdit/Writeルールが無視される

VS Code拡張でEdit(.claude/**)を設定しても効果なし。Bashルールは動く。Edit/Writeだけ無視される。(#36884)

罠4: bypassPermissionsでも保護ディレクトリは止まる

v2.1.78以降、.git.claudeへの書き込みは--dangerously-skip-permissionsでもプロンプトが出る。(#35668)

罠5: /modelの変更が/statusに即座に反映されない

モデル切替は次のAPIコール以降に有効。/statusの表示は古いまま。(#36835)

罠6: Claudeが追加するフラグでパターンが合わない

Bash(git status:*)を許可リストに入れた。Claudeはgit -C /path/to/repo statusを実行する。-Cフラグのせいでパターンが合わない。(#36900)

回避策: フックで-Cフラグをオプショナルにマッチ:

if echo "$COMMAND" | grep -qE '^\s*git\s+(-C\s+\S+\s+)?(status|log|diff|branch|show)'; then
    # 自動許可
fi

なぜこうなるのか

Claude Codeのパーミッションシステムは完全一致の文字列マッチングで動いている。正規表現ではない。*は「1文字以上の任意の文字列」にマッチするが、空文字にはマッチしない。複合コマンド(cd /path && git status)では最初のトークン(cd)だけが評価される。

この設計は、単純なコマンドには機能するが、Claude Codeが実際に生成するコマンドの多様性には対応しきれない。

根本的な回避策: PreToolUseフック

6つ中5つの罠はPreToolUseフックで回避できる。フックはパーミッションシステムとは独立したレイヤーで動く。

// .claude/settings.json
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "bash ~/.claude/hooks/my-guard.sh"
      }]
    }]
  }
}

フックスクリプトは標準入力からJSON(tool_input.command)を受け取り、exit 0で許可、exit 2でブロック。自分でパターンを書けるから、パーミッション設定の制限に縛られない。

詳しい書き方は公式ドキュメントのHooksセクションを参照。

📘 パーミッション設定の限界をhookで突破するパターンをもっと知りたい方へ: Claude Codeを本番品質にする — hook設計・運用ガイド(¥800・Ch.1-2 無料公開中)
📖 800時間の自律運用で実際にパーミッション設定で失敗した全記録: AIに仕事を任せてみた(¥800・第2章まで無料)

自分のトークン消費パターンを確認したい方へ
Token Checkupで5つの質問に答えるだけでトークン消費の診断ができる。Hook Selectorで最適なhookセットも分かる。


📖 トークン消費に困っているならClaude Codeのトークン消費を半分にする——800時間の運用データから見つけた実践テクニック(¥2,500・はじめに+第1章 無料)


⚠️ Opus 4.7緊急情報(2026年4月17日)
Opus 4.7のauto mode安全分類器がOpus 4.6にハードコードされている問題が発覚。3日間で23件以上のデータ損失。さらにv2.1.100以降、APIコールごとに約20,000トークンが見えない場所で追加課金されている問題も判明(#46917、GitHub上196件のリアクション)(50GB永久消失含む)。4倍のトークン消費も報告されている。対策: npx cc-safe-setup --opus47Survival Guide / Safety Scanner

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?