コンテンツにスキップ
無料で登録
Claude Code

Claude Code で権限とフックを設定する方法

/permissions と settings.json を使用して allow、ask、deny ルールを設定し、Claude Code のフックを追加、確認、トラブルシューティングします。

要点

Claude Code で /permissions を実行すると、権限ルールを表示・管理できます。ルールを永続化するには、allow、ask、deny を settings.json に記述します。フックは同じ設定ファイルを使用し、ツール呼び出しの前後にフォーマット、テスト、安全性チェックを実行します。権限の優先順位は deny → ask → allow であるため、allow ルールで deny ルールを上書きすることはできません。

これらの設定はコンピューター上のローカルツールを制御します。BetterToken が変更するのはモデル API の Base URL、API Key、ルーティングだけであり、ローカル権限をバイパスしたり、フックを実行したりするものではありません。

権限とフックを使い分ける

要件使用するもの
特定のコマンドを確認なしで実行するpermissions.allow
操作のたびに確認するpermissions.ask
機密ファイルの読み取りや危険なコマンドをブロックするpermissions.deny
ファイル変更後にフォーマットまたはテストするPostToolUse フック
実行前に操作を確認またはブロックするPreToolUse フック
チーム規約をモデルに説明する権限ルールではなく CLAUDE.md

正しいスコープを選ぶ

ファイルスコープリポジトリにコミットするか?
~/.claude/settings.json現在のユーザーのすべてのプロジェクトいいえ
.claude/settings.json現在のプロジェクトとチームはい
.claude/settings.local.jsonこのマシン上の現在のプロジェクトいいえ

最小限の権限ルールを設定する

/permissions で既存ルールを確認する

Claude Code で次を実行します。

/permissions

UI には allow、ask、deny の各ルールとそのソースファイルが表示されます。ユーザーまたはプロジェクト設定を選ぶ前に、既存のチームルールまたは管理ルールを確認してください。

範囲を絞ったルールを追加する

このプロジェクトレベルの例では、一般的なテストと lint を許可し、すべての git push の前に確認し、.env の読み取りをブロックします。

{
"permissions": {
"allow": [
"Bash(npm run lint *)",
"Bash(npm test *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}

コマンドはプロジェクト内に存在するスクリプトに置き換えます。確認をなくす目的だけで bypassPermissions を有効にしないでください。公式ドキュメントでは、このモードを隔離コンテナまたは VM に限定しています。

/permissions で確認する

ファイルを保存してから、もう一度 /permissions を実行します。各ルールが想定したソースに表示されることを確認し、allow、ask、deny のケースを 1 つずつ実行して動作を検証します。

コピー可能なフォーマットフックを追加する

この例では、Claude Code が Edit または Write を使用した後に、プロジェクトのフォーマッターを実行します。

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

ファイルにすでに permissions がある場合は、hooks を同じトップレベル JSON オブジェクトに統合します。単独の .claude/hooks.json は作成しないでください。まず npm run format を手動で実行し、成功することを確認します。

フックを確認する

  1. Claude Code で /hooks を実行します。
  2. PostToolUse を開き、Edit|Write と npm run format が表示されることを確認します。
  3. Claude にテストファイルを変更するよう依頼します。
  4. フック出力とファイル形式を確認し、フックがエラーなく 1 回実行されたことを確認します。

Claude Code は通常、設定変更を自動で再読み込みします。再読み込みされない場合は、セッションを終了して Claude Code を再起動してください。

よくあるエラー

症状原因解決方法
権限ルールがまったく適用されない~/.claude.json または誤ったディレクトリにある~/.claude/settings.json、.claude/settings.json、.claude/settings.local.json に移動する
許可した操作がブロックされるdeny ルールまたは管理ルールに一致している/permissions でソースを確認する。deny は ask と allow より優先される
フックが実行されないイベントまたは matcher がツールに一致しない/hooks を確認する。PreToolUse は実行前、PostToolUse は成功後に実行され、matcher は大文字・小文字を区別する
フックは実行されるがコマンドが失敗するスクリプト、作業ディレクトリ、または依存関係が誤っているまずプロジェクトディレクトリから同じコマンドを手動で実行する
BetterToken 接続後も確認が表示されるAPI プロバイダーとローカル権限は別であるBetterToken Base URL を維持し、範囲を絞った Claude Code 権限を別途設定する
すべてのフックを一時的に無効にする必要があるフックがデバッグを妨げる場合がある"disableAllHooks": true を追加し、デバッグ後に削除するか false に設定する

BetterToken の境界

BetterToken は Claude Code のモデル API アクセス、モデルルーティング、残高、使用量を扱います。Claude Code は引き続き次を制御します。

  • ファイルの読み取り・書き込みアクセス
  • Bash の確認動作
  • フックの実行タイミングと実行するスクリプト
  • サンドボックス、MCP、プロジェクトルール

401、Base URL、モデルマッピングのエラーについては、Claude Code 設定ガイドを参照してください。コマンド確認と自動化については、このページで権限とフックをトラブルシューティングします。

関連ドキュメント

参照