Skip to content

Commit 449ecba

Browse files
committed
fix(claude-code): remove wildcards from MCP permission patterns
Investigation confirmed Claude Code expects server names only, not wildcards. Updated all MCP permission patterns to remove asterisks: - mcp__git* → mcp__git - mcp__github-read* → mcp__github-read - mcp__playwright* → mcp__playwright Also updated documentation in permissive-default-surgical-removal.md to reflect that wildcards are not supported. Closes #1030
1 parent 8f3565c commit 449ecba

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

.claude/settings.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929
"Bash(check-mcp-logs:*)",
3030
"Bash(python:*)",
3131

32-
"mcp__git*",
33-
"mcp__github-read*",
32+
"mcp__git",
33+
"mcp__github-read",
3434
"mcp__github-write__create_pull_request",
3535
"mcp__github-write__add_issue_comment",
3636
"mcp__github-write__update_issue",
3737
"mcp__brave-search",
3838
"mcp__filesystem",
3939
"mcp__gdrive",
40-
"mcp__playwright*"
40+
"mcp__playwright"
4141
],
4242
"additionalDirectories": ["*"]
4343
},

knowledge/principles/permissive-default-surgical-removal.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Start with maximum capability and transparency, then surgically remove only what violates security or the spilled coffee principle. This inverts traditional security thinking (restrictive by default) in favor of developer experience and visibility.
44

55
## Core Pattern
6-
- **Wildcards over enumeration**: `mcp__git*` not 27 individual entries
6+
- **Server-level permissions**: `mcp__git` grants all tools from that server (wildcards not supported)
77
- **All access by default**: `additionalDirectories: ["*"]`, `WebFetch(domain:*)`
88
- **Full visibility**: `verbose: true`, keep all output transparent
99
- **Surgical removal**: Remove only specific dangerous operations like `claude config set`
@@ -18,7 +18,7 @@ Traditional security says "deny all, allow specific" but in a trusted developmen
1818
## Examples from Practice
1919
- Started with `Bash(claude config:*)` → removed only `set` operations
2020
- Enabled all directories access rather than maintaining allowed lists
21-
- Kept all MCP servers with wildcards rather than individual permissions
21+
- Kept all MCP servers with server-level permissions rather than individual tool permissions
2222
- Disabled telemetry/reporting at the source rather than filtering data
2323

2424
## Relationship to Other Principles

0 commit comments

Comments
 (0)