Skip to content

Claude Code permissions のセキュリティ強化 (allow 絞り込み・deny 拡充・タイポ修正) #7

@ikeisuke

Description

@ikeisuke

概要

apps/claude/settings.jsonpermissions が広めに開いており、機密ファイルの読み出しや危険なコマンド実行を阻止できていない箇所がある。安全寄りに締め直す。

検出した問題

1. ファイル系 allow が広すぎる

"Read(/**)", "Edit(/**)", "Write(/**)"

deny~/.aws/, ~/.ssh/, .env 等は塞いでいるが、未列挙の機密パスは素通り:

  • ~/.config/gcloud/**
  • ~/.kube/**
  • ~/.docker/config.json
  • ~/.gnupg/**
  • ~/Library/Keychains/**
  • **/.netrc
  • **/credentials*, **/*.pem, **/*.key, **/id_rsa*, **/id_ed25519*

2. 三重スラッシュのタイポ(無効ルール)

"Read(///tmp/**)", "Write(///tmp/**)"

Read(/tmp/**) の誤記でマッチしない。意図通りに修正。

3. defaultMode × skip* の重ね合わせが攻撃面を広げる

"defaultMode": "auto",
"skipDangerousModePermissionPrompt": true,
"skipAutoPermissionPrompt": true

3 つ同時オンは事故耐性が低い。defaultModedefault に戻し、auto は起動時に明示する運用に変更する案。

4. deny に致命パターンを追加

  • Bash(*rm -rf /*), Bash(*rm -rf ~*), Bash(*rm -rf $HOME*)
  • Bash(*curl*|*sh*), Bash(*wget*|*sh*) (リモートスクリプト直接実行)
  • Bash(*op item get*) (1Password CLI のシークレット取り出し)
  • Bash(sudo *) (対話可否は別途検討、最低でも ask

5. cleanupPeriodDays: 9999 は実質無効化

history.jsonl (3.4MB) や sessions/, projects/ が無制限に膨張する。90 日程度に下げる。

対応方針

  • apps/claude/settings.jsonallow / deny / defaultMode / skip* / cleanupPeriodDays をまとめて更新
  • 変更後に ./scripts/doctor で確認
  • HISTORY.md に追記

関連

  • AGENTS.md: 「許可ルールの定期メンテナンス」「設計方針」
  • 後続: tools:suggest-permissions の "review" モードで網羅性検証

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions