Claude Code CLI ignores settings.json permissions when running inside VSCode terminal

Resolved 💬 3 comments Opened Oct 16, 2025 by TomaszWieczorek-Jeppesen Closed Oct 16, 2025

Bug Description

Claude Code CLI ignores settings.json permissions configuration when running inside VSCode integrated terminal, but respects them correctly when running in native macOS Terminal.

The Write tool (and other tools in allow list) prompt for permission despite being explicitly allowed in ~/.claude/settings.json.

Environment

  • OS: macOS 15.6 (24G84)
  • Claude Code CLI: v2.0.19
  • Architecture: arm64
  • Terminal: Visual Studio Code 1.105.0 integrated terminal

Root Cause

Claude Code CLI detects VSCode environment via TERM_PROGRAM=vscode environment variable and changes permission behavior:

$ env | grep -E '(TERM_PROGRAM|VSCODE)'
TERM_PROGRAM=vscode
TERM_PROGRAM_VERSION=1.105.0
VSCODE_INJECTION=1
VSCODE_GIT_ASKPASS_MAIN=/Applications/Visual Studio Code.app/...
VSCODE_GIT_IPC_HANDLE=/var/folders/.../vscode-git-....sock
# ... other VSCODE_* variables

Steps to Reproduce

  1. Configure ~/.claude/settings.json:
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Edit",
      "Write",
      "Read",
      "Grep",
      "Glob"
    ],
    "deny": [],
    "defaultMode": "default"
  }
}
  1. Test in native macOS Terminal:

``bash
claude
# Request Write operation
# ✅ Works without prompt
``

  1. Test in VSCode integrated terminal:

``bash
claude
# Request Write operation
# ❌ Prompts for permission despite being in allow list
``

Expected Behavior

Claude Code CLI should respect settings.json permissions consistently across all terminal environments.

Actual Behavior

  • Native Terminal: Permissions from settings.json work correctly
  • VSCode Terminal: Permissions ignored, prompts for everything

Verification

  • ✅ Schema validation passes (no diagnostics errors)
  • ✅ JSON structure is valid
  • ✅ Same settings.json file used in both environments
  • ✅ Same Claude Code CLI version (2.0.19)
  • ✅ Only difference: TERM_PROGRAM=vscode environment variable

Impact

Users running Claude Code CLI in VSCode integrated terminal cannot use settings.json to configure permissions, forcing manual approval for every operation despite proper configuration.

Workaround

Run Claude Code CLI in native terminal (Terminal.app, iTerm2, etc.) instead of VSCode integrated terminal.

View original on GitHub ↗

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