Skip to content

[Bug]: Claude provider launch args are silently outranked by T3's own --permission-mode #7577

Description

@krishkumar

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/server

Steps to reproduce

  1. Settings -> Providers -> Claude. Set Launch args to --dangerously-skip-permissions.
  2. Open a thread whose runtime mode is Auto-accept edits.
  3. Send a prompt that makes the agent run a shell command.
  4. Inspect the spawned CLI process:
ps -axo command | grep '[c]laude --output-format stream-json'

Expected behavior

A user-supplied launch arg should not be silently inert.

Either the explicit launch arg wins, or T3 declines to emit a conflicting --permission-mode and surfaces a warning in provider settings that the arg conflicts with the thread runtime mode.

Today there is no feedback anywhere in the UI that the configured arg has no effect.

Actual behavior

T3 emits both flags. --permission-mode <derived from thread runtime mode> appears mid-argv, and the user's launch args are appended last:

--permission-mode acceptEdits ... --session-id=<...> --dangerously-skip-permissions

Claude Code resolves the explicit --permission-mode ahead of --dangerously-skip-permissions regardless of argv order, so the effective mode is acceptEdits. The CLI's own system:init message in T3's provider event log confirms it:

"model":"claude-opus-5[1m]","permissionMode":"acceptEdits"

Because --permission-prompt-tool stdio is also set, every non-edit tool call (Bash, MCP, web fetch) round-trips to a T3 approval card. Over roughly two days my projection_pending_approvals table recorded 351 approval requests, all from auto-accept-edits threads and none from full-access threads.

The provider setting reads as a global "stop asking me" switch, but it can never override the per-thread runtime mode.

Related

Impact

Minor bug or occasional failure

Version or commit

0.0.33

Environment

macOS 26.5.2 (arm64), T3 Code (Alpha) 0.0.33, Claude Code CLI 2.1.235, model claude-opus-5[1m]

Logs or stack traces

$ ps -axo command | grep '[c]laude --output-format stream-json'
claude --output-format stream-json --verbose --input-format stream-json \
  --effort high --model claude-opus-5[1m] --permission-prompt-tool stdio \
  --mcp-config {"mcpServers":{"t3-code":{"type":"http","url":"http://127.0.0.1:3773/mcp","headers":{"Authorization":"Bearer <REDACTED>"}}}} \
  --setting-sources=user,project,local --permission-mode acceptEdits \
  --include-partial-messages --add-dir $HOME/master/scratch/claude-setup \
  --add-dir $HOME/.t3/userdata/attachments --session-id=<REDACTED> \
  --dangerously-skip-permissions

$ cd ~/.t3/userdata/logs/provider && grep -rho '"model":"[^"]*","permissionMode":"[^"]*"' . | tail -3
"model":"claude-opus-5[1m]","permissionMode":"acceptEdits"
"model":"claude-opus-5[1m]","permissionMode":"acceptEdits"
"model":"claude-opus-5[1m]","permissionMode":"acceptEdits"

Screenshots, recordings, or supporting files

No response

Workaround

Set the thread runtime mode to Full access, which maps to bypassPermissions. The launch arg is redundant there and cannot help in any other mode.

Switch modes between turns rather than mid-turn, to avoid #6517.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions