← ClaudeAtlas

permission-checklisted

Diagnose why Claude Code is (or isn't) prompting for permission. By default reads only repo-local layers (CLI project, CLI project-local, VSCode workspace). Host-global layers (CLI user `~/.claude/`, VSCode user settings) are read ONLY when the user explicitly confirms — those files may contain unrelated paths or secrets. Use when user says "why is it asking me to approve?", "permission check", "why am I getting prompts?", "bypass isn't working", "check my permissions". Read-only diagnostic.
groundnuty/agentic-repo-template · ★ 0 · AI & Automation · score 75
Install: claude install-skill groundnuty/agentic-repo-template
<!-- Adapted from pedrohcgs/claude-code-my-workflow (MIT), https://github.com/pedrohcgs/claude-code-my-workflow --> # Permission Check ## Purpose Surface the full permission-mode picture across every layer Claude Code honors, so the user can see at a glance why prompts are (or aren't) firing. Claude Code resolves permission mode from a 6-tier stack; a single misconfigured layer produces silent overrides that are hard to debug by eye. ## The 6 layers (precedence: bottom wins) 1. **VSCode user settings** — `~/Library/Application Support/Code/User/settings.json` (macOS), `%APPDATA%/Code/User/settings.json` (Windows), `~/.config/Code/User/settings.json` (Linux). Key: `claudeCode.initialPermissionMode`. 2. **VSCode workspace settings** — `<repo>/.vscode/settings.json`. Same key. Wins over user. 3. **CLI user settings** — `~/.claude/settings.json`. Key: `permissions.defaultMode`. 4. **CLI project settings** — `<repo>/.claude/settings.json`. Same key. Wins over user. 5. **CLI project-local settings** — `<repo>/.claude/settings.local.json`. Same key. Wins over project. 6. **In-session mode** — set at session start from layers 1-5, then mutable via `Shift+Tab` or `/permission-mode`. Authoritative until session ends. **Key insight:** `initialPermissionMode` only fires at session start. If you toggled mid-session (or the session started before a settings change), the file-level settings are correct but the *runtime* mode differs. That's the #1 source of "bypass isn't working" con