Problem
SessionConfig has 16+ properties, most of which are internal tuning knobs that nobody changes. This makes the config surface confusing for developers and agents.
Current properties (16)
Actually useful to configure (~5):
- Timeout settings (3 separate:
SidecarLlmTimeoutSeconds, TurnLlmTimeoutSeconds, ToolExecutionTimeoutSeconds) — could be 1 base timeout with others derived
IdleTimeout — passivation timing
MemoryObserverIdleSeconds — observer timing
MaxToolCallsPerTurn — safety rail
Feature flags that should be removed once stable (2):
MemorySidecarsEnabled
DeterministicRetrievalEnabled
Internal tuning nobody changes (8):
CompactionThreshold, KeepRecentToolResults, KeepRecentMessages, SnapshotInterval, TitleGenerationInterval, MaxInlineToolResultChars, DiscoveredToolRetentionTurns, DiscoveredToolMaxCount
Not configurable — runtime-derived (4):
ModelId, ContextWindowTokens, InputModalities, OutputModalities
Proposed approach
- Consolidate 3 timeout settings into 1 base timeout with derived values
- Hardcode internal tuning as constants (still overridable via config for testing)
- Remove feature flags once memory and retrieval are stable
- Separate runtime-derived model properties from user config
- Update JSON schema to document the remaining ~5 settings with
additionalProperties: false
Related
- Session schema is currently
additionalProperties: true (no validation)
- CLAUDE.md Configuration Schema Sync Rule requires schema updates when adding properties
Problem
SessionConfig has 16+ properties, most of which are internal tuning knobs that nobody changes. This makes the config surface confusing for developers and agents.
Current properties (16)
Actually useful to configure (~5):
SidecarLlmTimeoutSeconds,TurnLlmTimeoutSeconds,ToolExecutionTimeoutSeconds) — could be 1 base timeout with others derivedIdleTimeout— passivation timingMemoryObserverIdleSeconds— observer timingMaxToolCallsPerTurn— safety railFeature flags that should be removed once stable (2):
MemorySidecarsEnabledDeterministicRetrievalEnabledInternal tuning nobody changes (8):
CompactionThreshold,KeepRecentToolResults,KeepRecentMessages,SnapshotInterval,TitleGenerationInterval,MaxInlineToolResultChars,DiscoveredToolRetentionTurns,DiscoveredToolMaxCountNot configurable — runtime-derived (4):
ModelId,ContextWindowTokens,InputModalities,OutputModalitiesProposed approach
additionalProperties: falseRelated
additionalProperties: true(no validation)