pub struct ForkedAgentConfig {
pub prompt_messages: Vec<Message>,
pub cache_safe_params: CacheSafeParams,
pub can_use_tool: Arc<CanUseToolFn>,
pub query_source: QuerySource,
pub fork_label: String,
pub overrides: Option<SubagentContextOverrides>,
pub max_output_tokens: Option<u64>,
pub max_turns: Option<u32>,
pub on_message: Option<Arc<dyn Fn(Message) + Send + Sync>>,
pub skip_transcript: bool,
pub skip_cache_write: bool,
}Expand description
Configuration for a forked agent query.
Fields§
§prompt_messages: Vec<Message>Messages to start the forked query loop with
cache_safe_params: CacheSafeParamsCache-safe parameters that must match the parent query
can_use_tool: Arc<CanUseToolFn>Permission check function for the forked agent
query_source: QuerySourceSource identifier for tracking
fork_label: StringLabel for analytics (e.g., ‘session_memory’, ‘supervisor’)
overrides: Option<SubagentContextOverrides>Optional overrides for the subagent context
max_output_tokens: Option<u64>Optional cap on output tokens. CAUTION: setting this changes both max_tokens AND budget_tokens (via clamping in claude.ts). If the fork uses cache_safe_params to share the parent’s prompt cache, a different budget_tokens will invalidate the cache — thinking config is part of the cache key. Only set this when cache sharing is not a goal (e.g., compact summaries).
max_turns: Option<u32>Optional cap on number of turns (API round-trips)
on_message: Option<Arc<dyn Fn(Message) + Send + Sync>>Optional callback invoked for each message as it arrives (for streaming UI)
skip_transcript: boolSkip sidechain transcript recording (e.g., for ephemeral work like speculation)
skip_cache_write: boolSkip writing new prompt cache entries on the last message. For fire-and-forget forks where no future request will read from this prefix.