VSCode Extension: Permission settings (allow: [*] and defaultMode: bypassPermissions) not working

Resolved 💬 4 comments Opened Nov 28, 2025 by AdrienCastelain Closed Nov 28, 2025

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

  1. Wildcard ["*"] in settings.json - Still prompts
  2. Removing settings.local.json - System recreates it with specific commands on each approval
  3. defaultMode: "bypassPermissions" - Still prompts
  4. VSCode setting claudeCode.allowDangerouslySkipPermissions: true - Still prompts
  5. Explicit tool allow list (Read(), Edit(), Bash(*), etc.) - Still prompts
  6. PreToolUse hooks returning {"decision": {"behavior": "allow"}} - Still prompts
  7. Making settings.local.json immutable with chflags uchg - Still prompts
  8. Full VSCode restart (Cmd+Q, not just reload) - Still prompts
  9. 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

  1. Permission prompts still appear for each new command type
  2. When user approves, the system ADDS the specific command to settings.local.json (e.g., "Bash(git status:*)")
  3. This overrides the wildcard with specific rules
  4. 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

  1. Create .claude/settings.json with "allow": ["*"]
  2. Open VSCode with Claude Code extension
  3. Start a new conversation
  4. Ask Claude to run any Bash command
  5. Observe: Permission prompt appears despite wildcard allow rule
  6. Approve the command
  7. 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.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗