VSCode Extension: Permission settings (allow: [*] and defaultMode: bypassPermissions) not working
Bug Description
The VSCode extension ignores permission settings configured in .claude/settings.json and .claude/settings.local.json. Despite having allow: ["*"] and defaultMode: "bypassPermissions" configured, the extension still prompts for permission on every new command type.
Environment
- Platform: macOS Darwin 24.5.0
- Claude Code Version: Native install, lastOnboardingVersion: 2.0.35
- IDE: VSCode with Claude Code extension
Configuration Attempted
.claude/settings.json
{
"permissions": {
"defaultMode": "bypassPermissions",
"allow": ["*"],
"deny": [],
"ask": []
}
}
.claude/settings.local.json
{
"permissions": {
"defaultMode": "bypassPermissions",
"allow": ["*"],
"deny": [],
"ask": []
}
}
VSCode User Settings
{
"claudeCode.allowDangerouslySkipPermissions": true
}
~/.claude.json Feature Flags
{
"cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false
}
}
What Was Tried
- Wildcard
["*"]in settings.json - Still prompts - Removing settings.local.json - System recreates it with specific commands on each approval
defaultMode: "bypassPermissions"- Still prompts- VSCode setting
claudeCode.allowDangerouslySkipPermissions: true- Still prompts - Explicit tool allow list (Read(), Edit(), Bash(*), etc.) - Still prompts
- PreToolUse hooks returning
{"decision": {"behavior": "allow"}}- Still prompts - Making settings.local.json immutable with
chflags uchg- Still prompts - Full VSCode restart (Cmd+Q, not just reload) - Still prompts
- Starting new conversations after config changes - Still prompts
Expected Behavior
With allow: ["*"] configured, NO permission prompts should appear. The wildcard should match all tools.
With defaultMode: "bypassPermissions" configured, the extension should skip permission prompts entirely.
Actual Behavior
- Permission prompts still appear for each new command type
- When user approves, the system ADDS the specific command to
settings.local.json(e.g.,"Bash(git status:*)") - This overrides the wildcard with specific rules
- New command types still trigger prompts because they are not in the specific list
Workaround
The CLI version with --dangerously-skip-permissions flag works correctly. Only the VSCode extension ignores the settings.
Impact
This prevents autonomous/unattended operation of Claude Code in VSCode, which is critical for automated workflows and AI agent systems.
Steps to Reproduce
- Create
.claude/settings.jsonwith"allow": ["*"] - Open VSCode with Claude Code extension
- Start a new conversation
- Ask Claude to run any Bash command
- Observe: Permission prompt appears despite wildcard allow rule
- Approve the command
- Check
.claude/settings.local.json- specific rule was added instead of using wildcard
Additional Context
The settings hierarchy documentation suggests .claude/settings.local.json takes precedence, but even with BOTH files containing identical wildcard configurations, prompts still appear.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗