/permissions
Views and manages Claude Code's tool permissions. It lists every permission rule and shows which `settings.json` file each rule comes from.
$ npx -y skills add LukeRenton/explore-claude-code --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/permissions
Context preview
What this command does when you run it.
Views and manages Claude Code's tool permissions. It lists every permission rule and shows which `settings.json` file each rule comes from.
Command definition
permissions.md/permissions
Views and manages Claude Code's tool permissions. It lists every permission rule and shows which `settings.json` file each rule comes from.
Usage
/permissions
Opens the permissions interface, where you can see what Claude is allowed and denied and add or change rules.
The Three Rule Types
Permissions are expressed as rules in your settings files:
| Rule | Effect | |---|---| | `allow` | Pre-approve a tool or command so it never prompts | | `ask` | Force a prompt, even when a broader mode would not | | `deny` | Block outright, in every mode |
Rules are evaluated in order: **deny, then ask, then allow.** The first match wins, and specificity does not change the order. A broad `deny` like `Bash(aws *)` blocks even a call that also matches a narrower `allow`, so a deny rule cannot carry allowlist exceptions.
Rule Syntax
| Pattern | Matches | |---|---| | `Bash(npm run build)` | The exact command | | `Bash(npm run *)` | Any command starting with `npm run ` | | `Read(./.env)` | Reading the `.env` file | | `Edit(src/**)` | Editing anything under `src/` | | `WebFetch(domain:example.com)` | Fetches to that domain | | `Agent(isolation:worktree)` | Deny or ask rules can match a tool's input parameter |
Enforced by Claude Code, Not the Model
Permission rules are a hard boundary. Instructions in your prompt or CLAUDE.md shape what Claude tries to do, but they cannot change what Claude Code allows. To grant or revoke access, use `/permissions`, a [permission mode](^The baseline that decides which actions prompt. See the Modes section), or a PreToolUse hook.
Recently Denied
When an action is blocked, it appears in the **Recently denied** tab in `/permissions`, where you can retry it with a manual approval.
Tips
- Reach for a `deny` rule when you need a guarantee. It beats any mode, since a mode cannot loosen it
- Pre-approve your safe, frequent commands, like `Bash(npm test)`, with `allow` rules to cut prompts
- Rules live in settings files, so you can commit a team-wide set or keep personal ones local
Further Reading
- [Official docs: Configure permissions](https://code.claude.com/docs/en/permissions)
Read more
/permissions
Views and manages Claude Code's tool permissions. It lists every permission rule and shows which `settings.json` file each rule comes from.
Usage
/permissions
Opens the permissions interface, where you can see what Claude is allowed and denied and add or change rules.
The Three Rule Types
Permissions are expressed as rules in your settings files:
| Rule | Effect | |---|---| | `allow` | Pre-approve a tool or command so it never prompts | | `ask` | Force a prompt, even when a broader mode would not | | `deny` | Block outright, in every mode |
Rules are evaluated in order: **deny, then ask, then allow.** The first match wins, and specificity does not change the order. A broad `deny` like `Bash(aws *)` blocks even a call that also matches a narrower `allow`, so a deny rule cannot carry allowlist exceptions.
Rule Syntax
| Pattern | Matches | |---|---| | `Bash(npm run build)` | The exact command | | `Bash(npm run *)` | Any command starting with `npm run ` | | `Read(./.env)` | Reading the `.env` file | | `Edit(src/**)` | Editing anything under `src/` | | `WebFetch(domain:example.com)` | Fetches to that domain | | `Agent(isolation:worktree)` | Deny or ask rules can match a tool's input parameter |
Enforced by Claude Code, Not the Model
Permission rules are a hard boundary. Instructions in your prompt or CLAUDE.md shape what Claude tries to do, but they cannot change what Claude Code allows. To grant or revoke access, use `/permissions`, a [permission mode](^The baseline that decides which actions prompt. See the Modes section), or a PreToolUse hook.
Recently Denied
When an action is blocked, it appears in the **Recently denied** tab in `/permissions`, where you can retry it with a manual approval.
Tips
- Reach for a `deny` rule when you need a guarantee. It beats any mode, since a mode cannot loosen it
- Pre-approve your safe, frequent commands, like `Bash(npm test)`, with `allow` rules to cut prompts
- Rules live in settings files, so you can commit a team-wide set or keep personal ones local
Further Reading
- [Official docs: Configure permissions](https://code.claude.com/docs/en/permissions)
Learn Claude Code by exploring it as it was designed - interactive IDE-style docs for commands, MCP, skills, CLAUDE.md and more.
Repo: LukeRenton/explore-claude-code
Other commands on explore-claude-code.
- /my-command
Review the changes in this PR. Focus on:
Open command - /review-pr
Review the changes in this PR. Focus on:
Open command - /write-tests
Write tests for: $ARGUMENTS
Open command - /BUILT-IN-COMMANDS
Commands baked into Claude Code that execute fixed logic directly. Type `/` at the prompt to see them all, or type `/` followed by any letters to filter. Unlike [bundled skills](^Prompt-driven workflows like /simplify and /batch that use Claude's tools to orchestrate work. See
Open command - /btw
Ask a quick side question about your current work without adding to the conversation history. The question and answer appear in a dismissible overlay and never enter the main context.
Open command - /compact
Compresses your conversation to reclaim context window space. Claude summarises the conversation so far, discards the original messages, and continues with the summary as its new starting point.
Open command

