{ "permissions": { "deny": [ "Bash(rm -rf /)", "Bash(format *)", "Bash(del /s /q C:\\*)", "Bash(powershell*Remove-Item*-Recurse*-Force*C:\\*)", "Bash(reg delete HKLM*)", "Bash(bcdedit*)", "Bash(curl*|*sh)", "Bash(wget*|*bash)", "Write(.env*)", "Write(*.key)", "Write(*.pem)", "Edit(.env*)", "Edit(*.key)" ] }, "hooks": { "SessionStart": [ { "hooks": [ { "type": "command", "command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Session start | host=$(hostname) | cwd=$(pwd)\" >> \"$HOME/.claude/session.log\"", "async": true } ] } ], "SubagentStart": [ { "hooks": [ { "type": "command", "command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Subagent spawned | type=$CLAUDE_SUBAGENT_TYPE\" >> \"$HOME/.claude/session.log\"", "async": true } ] } ], "SubagentStop": [ { "hooks": [ { "type": "command", "command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Subagent completed | type=$CLAUDE_SUBAGENT_TYPE\" >> \"$HOME/.claude/session.log\"", "async": true } ] } ], "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash \"$HOME/.claude/hooks/pre-tool-validate.sh\"", "timeout": 10 }, { "type": "prompt", "prompt": "The user asked to run a bash command. If the command contains 'rm -rf /', 'format', 'del /s /q C:\\', or would wipe an entire drive, respond {\"decision\": \"block\", \"reason\": \"Destructive whole-drive operation blocked\"}. Otherwise respond {\"decision\": \"allow\"}.", "model": "haiku" } ] } ], "PostToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash \"$HOME/.claude/hooks/post-download-scan.sh\"", "timeout": 15, "async": true } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "bash \"$HOME/.claude/hooks/session-cleanup.sh\"", "timeout": 10, "async": true }, { "type": "command", "command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Session stop\" >> \"$HOME/.claude/session.log\"", "async": true } ] } ] }, "effortLevel": "high", "autoUpdatesChannel": "latest", "autoMemoryEnabled": true, "mcpServers": { "slack": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-slack" ], "env": { "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}", "SLACK_TEAM_ID": "CoMsolutionshq" } }, "desktop-commander": { "command": "npx", "args": [ "-y", "@wonderwhy-er/desktop-commander" ] }, "filesystem-synos": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", " Lib/stuff/Development/Syn_OS{Master Repo}" ] }, "memory": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-memory" ] }, "sequential-thinking": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sequential-thinking" ] }, "github": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-github" ], "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" } }, "brave-search": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-brave-search" ], "env": { "BRAVE_API_KEY": "${BRAVE_API_KEY}" } }, "context7": { "command": "npx", "args": [ "-y", "@upstash/context7-mcp" ] }, "playwright": { "command": "npx", "args": [ "-y", "@playwright/mcp@0.0.38" ] }, "semgrep": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-server-semgrep" ], "env": { "SEMGREP_APP_TOKEN": "${SEMGREP_APP_TOKEN}" } }, "n8n": { "command": "npx", "args": [ "-y", "@leonardsellem/n8n-mcp-server" ], "env": { "N8N_API_URL": "${N8N_API_URL}", "N8N_API_KEY": "${N8N_API_KEY}" } }, "todoist": { "command": "npx", "args": [ "-y", "@chrusic/todoist-mcp-server-extended" ], "env": { "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}" } }, "google-calendar": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-server-google-calendar" ], "env": { "GOOGLE_CALENDAR_CLIENT_ID": "${GOOGLE_CALENDAR_CLIENT_ID}", "GOOGLE_CALENDAR_CLIENT_SECRET": "${GOOGLE_CALENDAR_CLIENT_SECRET}" } }, "notion": { "command": "npx", "args": [ "-y", "@notionhq/notion-mcp-server@2.2.1" ], "env": { "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ${NOTION_API_KEY}\", \"Notion-Version\": \"2022-06-28\"}" } } }, "extraKnownMarketplaces": { "claude-plugins-official": { "source": { "source": "github", "repo": "anthropics/claude-plugins-official" } } } }