[BUG] Gateway desktop: block missing chatTabEnabled — bootstrap disables Chat with no opt-in path
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
The Claude Code Gateway's desktop: schema does not accept chatTabEnabled. When Claude Desktop is configured with bootstrapUrl pointing at the gateway's /user/bootstrap endpoint, the bootstrap response does not include chatTabEnabled — and Desktop interprets its absence as false, disabling the Chat tab entirely.
There is no way to enable Chat when using the gateway as the bootstrap server:
- Adding
chatTabEnabled: trueto the gateway'sdesktop:block → rejected at boot withunrecognized_keys - Adding
chatTabEnabled: trueto the local imported JSON → overwritten by the bootstrap response on every launch - Setting it via MDM alongside
bootstrapUrl→ ignored because "when a bootstrap response is in effect, it replaces MDM-delivered values wholesale"
This means deployments using the Claude Code Gateway as a bootstrap server are forced to lose the Chat tab with no workaround.
What Should Happen?
The gateway's desktop: schema should accept chatTabEnabled (and chatAdvancedFileAnalysisEnabled) so administrators can control all Desktop surfaces from the gateway config, matching what Desktop's bootstrap response schema supports.
Alternatively, the gateway should emit chatTabEnabled: true by default in its /user/bootstrap response when the key is not explicitly set in the desktop: block — matching the documented default behavior.
Context
The chatTabEnabled key was added to Claude Desktop on 2026-06-16 (per the configuration changelog). The gateway's desktop: schema has not been updated to include it as of gateway version 2.1.220.
Currently accepted desktop: keys in the gateway:
coworkTabEnabled✅isClaudeCodeForDesktopEnabled✅modelDiscoveryEnabled✅isLocalDevMcpEnabled✅isDesktopExtensionEnabled✅isDesktopExtensionSignatureRequired✅disableAutoUpdates✅autoUpdaterEnforcementHours✅banner✅chatTabEnabled❌ missingchatAdvancedFileAnalysisEnabled❌ missing
Error Messages/Logs
Adding chatTabEnabled to the gateway config:
claude gateway: [
{
"code": "unrecognized_keys",
"keys": ["chatTabEnabled"],
"path": ["managed", "policies", 0, "desktop"],
"message": "Unrecognized key(s) in object: 'chatTabEnabled'"
}
]
Gateway exits with code 1.
Steps to Reproduce
- Configure gateway with
desktop:block (any valid keys) - Set
bootstrapUrlon device pointing at<gateway>/user/bootstrap - Open Claude Desktop → Chat tab is gone
- Attempt to add
chatTabEnabled: truetodesktop:block → gateway crashes at boot - No path to restore Chat while using bootstrap
Claude Model
Not applicable
Is this a regression?
No — chatTabEnabled was added to Desktop after the gateway's desktop: schema was defined
Last Working Version
Chat works when NOT using bootstrapUrl (direct inference provider config)
Claude Code Version
2.1.220 (gateway binary)
Platform
Other
Operating System
macOS
Terminal/Shell
N/A (Claude Desktop app)
Additional Information
- Gateway version: 2.1.220
- Claude Desktop: latest (3P mode)
- The gateway's
/user/bootstrapresponse correctly includes all keys from thedesktop:block, but cannot includechatTabEnabledbecause the schema rejects it - Desktop's configuration reference lists
chatTabEnabledwith Availability "MDM + Bootstrap" — the bootstrap server should be able to deliver it, but the gateway cannot emit it - Other newly-added Desktop keys may have the same gap (any key added after the gateway's schema was frozen)
Suggested fix
- Add
chatTabEnabled(default:true) andchatAdvancedFileAnalysisEnabled(default:false) to the gateway'sdesktop:schema - Or: have the gateway emit all documented Desktop keys with their defaults in
/user/bootstrapeven when not explicitly configured indesktop:, so absence does not mean disabled
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗