pub struct SubAgentConfig {Show 20 fields
pub enabled: bool,
pub max_concurrent: usize,
pub extra_dirs: Vec<PathBuf>,
pub user_agents_dir: Option<PathBuf>,
pub default_permission_mode: Option<PermissionMode>,
pub default_disallowed_tools: Vec<String>,
pub allow_bypass_permissions: bool,
pub default_memory_scope: Option<MemoryScope>,
pub hooks: SubAgentLifecycleHooks,
pub transcript_dir: Option<PathBuf>,
pub transcript_enabled: bool,
pub transcript_max_files: usize,
pub context_window_turns: usize,
pub max_spawn_depth: u32,
pub context_injection_mode: ContextInjectionMode,
pub parent_context_policy: ParentContextPolicy,
pub max_parent_messages: usize,
pub summary_max_chars: usize,
pub llm_timeout_secs: u64,
pub worktree: WorktreeConfig,
}Expand description
Sub-agent pool configuration, nested under [agents] in TOML.
When enabled = true, the agent can spawn isolated sub-agent sessions from
SKILL.md-based agent definitions. Sub-agents inherit the parent’s provider pool
unless overridden by model in their definition frontmatter.
§Example (TOML)
[agents]
enabled = true
max_concurrent = 3
max_spawn_depth = 2Fields§
§enabled: boolEnable the sub-agent subsystem. Default: false.
max_concurrent: usizeMaximum number of sub-agents that can run concurrently.
extra_dirs: Vec<PathBuf>Additional directories to search for .agent.md definition files.
user_agents_dir: Option<PathBuf>User-level agents directory.
default_permission_mode: Option<PermissionMode>Default permission mode applied to sub-agents that do not specify one.
default_disallowed_tools: Vec<String>Global denylist applied to all sub-agents in addition to per-agent tools.except.
allow_bypass_permissions: boolAllow sub-agents to use bypass_permissions mode.
default_memory_scope: Option<MemoryScope>Default memory scope applied to sub-agents that do not set memory in their definition.
hooks: SubAgentLifecycleHooksLifecycle hooks executed when any sub-agent starts or stops.
transcript_dir: Option<PathBuf>Directory where transcript JSONL files and meta sidecars are stored.
transcript_enabled: boolEnable writing JSONL transcripts for sub-agent sessions.
transcript_max_files: usizeMaximum number of .jsonl transcript files to keep.
context_window_turns: usizeNumber of recent parent conversation turns to pass to spawned sub-agents. Set to 0 to disable history propagation.
max_spawn_depth: u32Maximum nesting depth for sub-agent spawns.
context_injection_mode: ContextInjectionModeHow parent context is injected into the sub-agent’s task prompt.
parent_context_policy: ParentContextPolicyWhether to sanitize parent conversation history before passing to a spawned sub-agent.
Defaults to ParentContextPolicy::InheritSanitized which runs each text message part
through the IPI sanitizer, stripping prompt-injection payloads that may have entered the
parent history via tool results, web scrapes, or A2A messages.
max_parent_messages: usizeMaximum number of parent messages to inject, independent of context_window_turns.
Acts as a hard upper bound on context propagation volume to limit the blast radius
of poisoned histories. When max_parent_messages < context_window_turns * 2 this cap
wins and fewer messages are passed; otherwise context_window_turns * 2 is the binding
limit. The tighter of the two limits always applies.
summary_max_chars: usizeMaximum character count for the Summary context injection mode.
When context_injection_mode = "summary", the extracted summary is truncated
to this many characters at a UTF-8 char boundary before being prepended to the
sub-agent’s task prompt. Consistent with the max_state_chars naming convention.
Default: 600 (≈200 tokens at 3 chars/token).
llm_timeout_secs: u64Maximum wall time in seconds for a single LLM call inside a sub-agent turn.
If the provider does not return a response within this window, the call is cancelled and the sub-agent turn fails with a timeout error. Default: 120.
worktree: WorktreeConfigWorktree isolation settings propagated from the top-level [worktree] section.
Passed to the subagent manager’s spawn function so it can determine whether
and how to create a per-agent git worktree without needing a reference to
the full Config.
§Invariant
This field is always populated from Config::worktree in runner.rs bootstrap.
Do not set defaults independently — changes here will not take effect in production
because the bootstrap overwrites this value before passing it to SubAgentManager.
Trait Implementations§
Source§impl Clone for SubAgentConfig
impl Clone for SubAgentConfig
Source§fn clone(&self) -> SubAgentConfig
fn clone(&self) -> SubAgentConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more