← レッスンに戻る
第6章 · Claude Code応用

Settings.json と Permissions の詳細

Settings & Permissions · 約 10 分

重要キーワード

English日本語説明
settings.json 設定ファイル Claude Code の挙動を JSON で設定
Permissions 権限ルール ツールごとに許可/拒否/確認を細かく指定
Statusline ステータスライン ターミナル下部の状態表示。カスタム可
Local vs Shared 個人 vs 共有 settings.local.json と settings.json の使い分け

Settings.json: Claude Code の中央管制

.claude/settings.json (プロジェクト用) と ~/.claude/settings.json (グローバル) で Claude Code のあらゆる挙動を設定できます。

階層と優先順位

---
description: プロジェクトの全テストを実行する
---

このプロジェクトの自動テストを実行し、失敗があれば原因を分析してください。
- Python: `pytest -q`
- Node: `npm test`
失敗したテスト名と原因の要約を箇条書きでまとめてください。

下の階層が上書き優先。API キーやトークンは local に書くのが安全。

主なトップレベル項目

---
description: 指定したファイルを要約
---

@$ARGUMENTS の内容を 5 行で要約してください。

Permissions の書き方

ツールごとに allow / ask / deny をルールで指定できます。

---
description: プロジェクトの全テストを実行する
---

このプロジェクトの自動テストを実行し、失敗があれば原因を分析してください。
- Python: `pytest -q`
- Node: `npm test`
失敗したテスト名と原因の要約を箇条書きでまとめてください。

マッチャ構文

移行戦略

Statusline をカスタマイズ

---
description: 指定したファイルを要約
---

@$ARGUMENTS の内容を 5 行で要約してください。

ブランチ名や残トークンなどを常時表示できます。

env で環境変数を固定

セッション内で常時有効な環境変数。秘匿情報は 絶対に書かない こと (commit 漏れ事故を防ぐ)。

Plugin

カスタムスキル + コマンド + MCP を 1 パッケージで配布できる仕組み。

/summarize src/server.py

設定の確認

wzxhzdk:3

よくある失敗

試す

設定の改善案を Claude に提案させましょう。

▶ 設定レビュー
次の `.claude/settings.json` の安全性を評価してください。問題点と改善案を箇条書きで。 ```json { "permissions": { "allow": ["Bash(*)", "Edit(*)"], "deny": [] } } ```

チーム標準 settings.json テンプレ (コピペ用)

新規プロジェクトに置く デフォルト として:

wzxhzdk:4

読み取りはほぼ自由 / 編集は対象ディレクトリだけ / 危険コマンドと秘密ファイルは絶対 deny。 新人がリポジトリを clone してすぐ Claude Code を使い始めても安全。

個人 (settings.local.json) のテンプレ

.gitignoresettings.local.json を必ず追加してから:

wzxhzdk:5

→ 個人の API キー・好みの追加コマンドはここに。チーム共有 settings.json と統合される。

演習問題

演習 1: 安全な permissions 雛形を書く

Python プロジェクト用に、安全で実用的な .claude/settings.json を作成してください。

要件: - Read / Glob / Grep / Edit (一般ファイル) は allow - pytest, ruff, git status/diff/log は allow - git push, git commit -a は ask - rm -rf, .env 編集, curl/wget は deny

スタータープロンプト:
Python プロジェクト用の `.claude/settings.json` を書いてください。permissions セクションを以下方針で:
- allow: Read, Glob, Grep, Edit, pytest, ruff, git status/diff/log
- ask: git push, git commit
- deny: rm -rf, .env 編集, curl/wget でのネットアクセス
完全な JSON のみ示してください。
ヒントを見る

プレフィックスマッチで Bash(pytest *) のように書きます。Edit(.env) で個別ファイルを deny できます。

理解度チェック

  1. 個人の API キーや秘密情報を書くべきファイルは?
    1. .claude/settings.json (commit 対象)
    2. .claude/settings.local.json (gitignore)
    3. CLAUDE.md
    4. package.json
  2. permissions の `ask` の意味は?
    1. 毎回ユーザーに確認
    2. 自動許可
    3. 完全拒否
    4. ログに記録だけ
  3. permissions で **避けるべき** 設定は?
    1. Bash(*) を allow
    2. Read(*) を allow
    3. .env を deny
    4. git push を ask
解答と解説を見る
  1. B — settings.local.json は個人用で gitignore 推奨。秘密はここに。
  2. A — ask は実行前にユーザー確認を求めます。
  3. A — Bash(*) を allow すると任意のコマンドが許可されてしまい危険です。