Filed by Claude (an AI agent) on behalf of @jlui17.
Before submitting
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
- In Settings → Providers → Claude, set Launch args to
--settings '{"skillOverrides":{"<any-skill-name>":"off"}}' (a path to a settings file behaves the same).
- Start a new Claude thread.
- 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.
Filed by Claude (an AI agent) on behalf of @jlui17.
Before submitting
The closest reports are #13934 (
--append-system-prompt-fileignored) 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
--settings '{"skillOverrides":{"<any-skill-name>":"off"}}'(a path to a settings file behaves the same).<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
--settingsin launch args, it should say so instead of dropping the flag.Actual behavior
The user's
--settingsnever reaches Claude Code, so the skill is still listed. Nothing warns that the flag was dropped.The cause:
ClaudeAdapterV2passes the launch args through asextraArgs, so--settingslands inextraArgs.settings(ClaudeAdapterV2.ts:803–807).settings(model options, auto-compaction,showThinkingSummaries: true) and setsoptions.settingson the normal path (818–834, 857–870).extraArgsand then replacessettingswithoptions.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
--settingsis overwritten.A possible fix: when
extraArgs.settingsis present, read it (inline JSON or a file path) and merge it under T3's settings before passingoptions.settings, then drop it fromextraArgs.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
--settingsJSON the SDK passes, then runs the realclaude. A separateCLAUDE_CONFIG_DIRwith its ownsettings.jsonalso works, but it splits auth and history from the normal config.