権限の設定
Claude Code の権限モードを設定し、どの操作に人間による確認が必要かを制御する
API キーが必要ですか? 登録する →エンドポイントと Base URL →
目次
Claude Code は権限システムを使用して、どの操作にユーザーの確認が必要かを制御します。権限を適切に設定することで、安全性を確保しながら開発効率を高めることができます。
権限モード¶
| モード | 説明 | 適用シーン |
|---|---|---|
default |
ツールを初めて使用する際に権限を確認(manual モード) | 日常的な開発、安全性と効率のバランス |
acceptEdits |
ファイル編集を自動承認、その他の操作は確認が必要 | 頻繁なファイル修正が必要なタスク |
plan |
分析のみで実行しない(Plan Mode)。auto モードが利用可能な場合、プランニング中のシェルコマンドは分類器でレビューされる | コードの探索・レビュー、Claude に変更を加えさせたくない場合 |
auto |
分類器が承認を要する操作をレビューし、明確に範囲外の操作をブロック、それ以外は確認なしで実行 | 確認が少なく済む日常開発(Claude Code 2.1.283 以降、対話セッションの既定) |
dontAsk |
承認不要の操作(作業ディレクトリ内のファイル読み取りや読み取り専用のコマンドなど)と Allow ルールで事前承認された操作のみ実行し、その他は尋ねずに拒否 | CI/CD などの無人実行 |
bypassPermissions |
すべての権限プロンプトをスキップ | 完全に隔離され、信頼できる環境 |
auto モードと QCode:auto は QCode 経由でも動作します。分類器リクエストは Claude Code 自身が 送信します(デフォルトモデル
claude-sonnet-5)。これらのリクエストは使用量にカウントされます。 "your requests go through … which isn't compatible" という英語の通知が表示された場合、対話セッションでは レビューが必要な最初の操作が Enter を押すまで保留されます。CLAUDE_CODE_AUTO_MODE_SERVER=0を設定すると 通知は非表示になります。 機能可用性一覧 参照。
権限モードの切り替え¶
Shift+Tabを押して権限モードを循環切り替え。auto からの順序は auto → default → acceptEdits → plan- Plan Mode に入るには、manual モード(default)から
Shift+Tabを 2 回押すか、auto から 3 回押す - 起動時に指定:
claude --permission-mode acceptEdits - ダイアログで直接モードを選択
デフォルト権限モードの設定¶
.claude/settings.json(プロジェクト)または ~/.claude/settings.json(ユーザー)で設定します:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
注意:
"defaultMode": "auto"はユーザーレベルの~/.claude/settings.json、または組織の managed settings に書いた場合のみ有効です。プロジェクトの.claude/settings.jsonや.claude/settings.local.jsonでは 無視され、セッションは組み込みのデフォルトが使われます(ユーザーレベルの設定は適用されません)。bypassPermissionsもプロジェクト設定では有効になりません。--permission-modeフラグは設定ファイルより優先されます。
Allow ルール:コマンドの事前承認¶
特定のコマンドを事前に承認して、毎回確認を求められないようにします:
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test:*)",
"Bash(git status)",
"Bash(git add:*)",
"Bash(git diff:*)"
]
}
}
Allow ルールの構文:
Bash(コマンド)— コマンドの完全一致Bash(コマンドプレフィックス:*)— そのプレフィックスで始まるコマンドに一致Read(ファイルパス)— 特定ファイルの読み取りを許可Write(ファイルパス)— 特定ファイルへの書き込みを許可
Deny ルール:機密ファイルの保護¶
Claude が機密ファイルにアクセスまたは変更するのを防ぎます:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Write(./.git/**)",
"Bash(rm -rf:*)"
]
}
}
Deny ルールの構文:
- パスパターンは
*(単一レベル)と**(複数レベル)のワイルドカードをサポート - Deny ルールは Allow ルールより優先度が高い
Allow と Deny の併用¶
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff)"
],
"deny": [
"Bash(git push:*)",
"Bash(rm -rf:*)",
"Read(./.env*)"
]
}
}
設定ファイルの階層¶
Claude Code は以下の優先順位で権限設定をマージします:
| 優先度 | 場所 | 適用範囲 |
|---|---|---|
| 最高 | .claude/settings.local.json(Git にコミットしない) |
個人ローカルの上書き |
| 中 | .claude/settings.json(Git にコミット) |
チーム共有設定 |
| 最低 | ~/.claude/settings.json |
グローバルユーザー設定 |
チームコラボレーションの推奨事項:
- チーム共通の allow/deny ルールを
.claude/settings.jsonに記述して Git にコミットする - 個人の特別なニーズは
.claude/settings.local.jsonに記述して.gitignoreに追加する
ベストプラクティス¶
1. 機密認証情報の保護
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./credentials/**)",
"Read(./.ssh/**)"
]
}
}
2. フロントエンドプロジェクトの設定
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run dev)",
"Bash(npm run build)",
"Bash(npm run test:*)",
"Bash(npm run lint:*)"
]
}
}
3. CI/CD 自動化
Claude Code 2.1.285 以降、フィーチャーフラグを取得できないセッションでは、claude -p と Agent SDK は
権限モードが未指定だと auto で開始します。ANTHROPIC_AUTH_TOKEN で QCode に接続すると、Claude Code には
フィーチャーフラグを取得するための認証情報がないため(毎回まっさらな状態から起動する CI コンテナも同様)、
これは CI の既定の挙動になります。CI ではモードを明示してください。dontAsk と許可リストの組み合わせを推奨します:
承認不要の操作とリスト内のツールが実行され、それ以外はすべて拒否されます。
claude -p "Run the tests and fix failures" \
--permission-mode dontAsk \
--allowedTools "Read,Edit,Bash(npm test)"
プロジェクト設定で書く場合は以下です:
{
"permissions": {
"defaultMode": "dontAsk",
"allow": ["Read", "Edit", "Bash(npm test)"]
}
}
⚠️ 注意:
bypassPermissionsモードはすべてのセキュリティチェックをスキップします。完全に隔離され、信頼できる環境(使い捨てコンテナなど)でのみ使用してください。
QCode を始める
API キーひとつで Claude Code・Codex などに対応。トークン単位の課金で、各モデルの単価は qcode.cc/models に掲載