plugins/claude-code-expert/archive/v7.6.0/skills/permissions-security/SKILL.md
# Claude Code Permissions & Security Complete reference for the permission model and security features. ## Permission Modes Claude Code operates in one of several permission modes: ### Default Mode (`default`) - Prompts on first use of each tool type - User approves/denies each tool call - Safest mode for general use ### Accept Edits Mode (`acceptEdits`) - Auto-approves file edits (Read, Write, Edit) - Still asks for Bash commands and other tools - Good balance for code-focused work ### Pl
npx skillsauth add markus41/claude plugins/claude-code-expert/archive/v7.6.0/skills/permissions-securityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Complete reference for the permission model and security features.
Claude Code operates in one of several permission modes:
default)acceptEdits)plan)Shift+Tab or --permission-mode plandontAsk)bypassPermissions)--dangerously-skip-permissions flagShift+Tab — Cycle through permission modes interactively--permission-mode <mode> — Set mode at startupIn settings.json or .claude/settings.json:
{
"permissions": {
"allow": [
"Read",
"Write",
"Edit",
"Glob",
"Grep",
"Bash(npm test)",
"Bash(npm run *)",
"Bash(npx tsc *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(ls *)",
"Bash(mkdir *)",
"Bash(cat *)",
"Bash(head *)",
"Bash(tail *)",
"Bash(wc *)",
"Bash(echo *)",
"Bash(pwd)",
"Bash(which *)",
"Bash(node *)",
"Bash(python3 *)",
"WebFetch",
"WebSearch",
"TodoWrite",
"NotebookEdit",
"Agent"
]
}
}
{
"permissions": {
"deny": [
"Bash(rm -rf /)",
"Bash(sudo *)",
"Bash(curl * | bash)",
"Bash(wget * | bash)",
"Bash(chmod 777 *)",
"Bash(> /dev/sda)",
"Bash(mkfs *)",
"Bash(dd if=*)",
"Bash(:(){ :|:& };:)"
]
}
}
| Pattern | Example | Matches |
|---------|---------|---------|
| Exact tool | "Read" | All Read calls |
| Bash prefix | "Bash(npm test)" | Exactly npm test |
| Bash glob | "Bash(npm *)" | Any npm command |
| MCP wildcard | "mcp__server__*" | All tools from server |
| MCP specific | "mcp__fs__read_file" | Specific MCP tool |
Read — Read file contentsGlob — Find files by patternGrep — Search file contentsTodoWrite — Manage todo listWrite — Create/overwrite filesEdit — Modify existing filesBash — Execute shell commandsWebFetch — Fetch web contentWebSearch — Search the webNotebookEdit — Edit Jupyter notebooksAgent — Spawn sub-agents (inherits parent permissions)AskUserQuestion — Always allowed (asks user questions)Skill — Invoke slash commands{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Bash(npm test)",
"Bash(npx tsc --noEmit)"
]
}
}
Use hooks to guard sensitive paths:
#!/bin/bash
# PreToolUse hook
INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool_name')
PATH_ARG=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.path // ""')
# Block access to secrets
if echo "$PATH_ARG" | grep -qE '\.(env|pem|key|secret)$'; then
echo '{"decision": "deny", "reason": "Access to secret files is blocked"}'
exit 0
fi
echo '{"decision": "approve"}'
{
"permissions": {
"allow": [
"Bash(npm *)",
"Bash(npx *)",
"Bash(git *)",
"Bash(ls *)",
"Bash(cat *)"
],
"deny": [
"Bash(rm *)",
"Bash(sudo *)",
"Bash(curl *)",
"Bash(wget *)"
]
}
}
{
"permissions": {
"allow": [
"mcp__filesystem__read_file",
"mcp__filesystem__list_directory"
],
"deny": [
"mcp__filesystem__write_file",
"mcp__filesystem__delete_file"
]
}
}
During a session, when Claude requests a tool:
Session permissions reset when Claude Code restarts. For persistent permissions, add them to settings.json.
Enterprise admins can push managed settings that users cannot override:
{
"managedSettings": {
"permissions": {
"deny": [
"Bash(curl *)",
"Bash(wget *)",
"WebFetch",
"WebSearch"
]
},
"model": "claude-sonnet-4-6",
"hooks": {
"PostToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "bash /opt/audit/log-tool-use.sh"
}
]
}
]
}
}
}
.mcp.json (use env vars).env files in .gitignoredevelopment
Enhanced plan-authoring skill with Pre-Writing context gathering, task metadata, non-TDD templates, Red Flags, telemetry, and an automated plan linter. Use when you have a spec or requirements for a multi-step task, before touching code.
tools
Documentation intelligence engine with graph-based API docs, algorithm library, and drift detection
tools
Ultraplan cloud planning — kick off a plan in the cloud from your terminal, review and revise in the browser, then execute remotely or send back to CLI
tools
--- name: mcp description: Configure MCP servers for Claude Code — stdio vs HTTP, authentication, Tools/Resources/Prompts distinction, channels (CI webhook, mobile relay, Discord bridge, fakechat), and cost of always-loaded tools. Use this skill whenever adding an MCP server, debugging connection issues, choosing between MCP Tools vs Prompts vs Resources, installing channel servers, or managing .mcp.json. Triggers on: "MCP server", "mcp config", "add Obsidian MCP", "install context7", "channels"