Skip to content

[Bug]: Claude launch args --settings is silently replaced by T3's own SDK settings #15073

Description

@jlui17

Filed by Claude (an AI agent) on behalf of @jlui17.

Before submitting

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

The closest reports are #13934 (--append-system-prompt-file ignored) and #7577 (launch args outranked by the permission mode). Both are the same kind of conflict between a launch arg and an SDK option T3 sets, but neither covers --settings.

Area

apps/server

Steps to reproduce

  1. In Settings → Providers → Claude, set Launch args to --settings '{"skillOverrides":{"<any-skill-name>":"off"}}' (a path to a settings file behaves the same).
  2. Start a new Claude thread.
  3. Ask the agent whether <any-skill-name> is in its skill list.

Expected behavior

The session starts with the user's settings merged with T3's own settings, so the skill is hidden. If T3 can't support --settings in launch args, it should say so instead of dropping the flag.

Actual behavior

The user's --settings never reaches Claude Code, so the skill is still listed. Nothing warns that the flag was dropped.

The cause:

  • ClaudeAdapterV2 passes the launch args through as extraArgs, so --settings lands in extraArgs.settings (ClaudeAdapterV2.ts:803–807).
  • T3 also builds its own SDK settings (model options, auto-compaction, showThinkingSummaries: true) and sets options.settings on the normal path (818–834, 857–870).
  • The Agent SDK (0.3.276) copies extraArgs and then replaces settings with options.settings (sdk.mjs): let Rn={...a??{}};if(this.options.settings)Rn.settings=this.options.settings;

So whenever T3 sets any setting of its own, a user's --settings is overwritten.

A possible fix: when extraArgs.settings is present, read it (inline JSON or a file path) and merge it under T3's settings before passing options.settings, then drop it from extraArgs.

Impact

Minor bug or occasional failure

Version or commit

0.0.46-nightly.20261003.2610 (8ed276c); the same code is on main @ fed41fa.

Environment

Linux (Arch/Omarchy), T3 Code server nightly, Claude Code 2.1.286, Claude Agent SDK 0.3.276, Claude provider.

Workaround

Point the Claude provider's binary path at a small wrapper script that merges the extra settings into the --settings JSON the SDK passes, then runs the real claude. A separate CLAUDE_CONFIG_DIR with its own settings.json also works, but it splits auth and history from the normal config.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions