#[non_exhaustive]pub struct RunConfig {
pub streaming_mode: StreamingMode,
pub tool_confirmation_decisions: HashMap<String, ToolConfirmationDecision>,
pub cached_content: Option<String>,
pub transfer_targets: Vec<String>,
pub parent_agent: Option<String>,
pub auto_cache: bool,
pub history_max_events: Option<usize>,
pub tool_concurrency: ToolConcurrencyConfig,
pub record_payloads: bool,
pub trace_payload_max_bytes: usize,
}Expand description
Configuration for a single agent run.
Controls streaming behavior, tool confirmation, caching, transfer targets,
and concurrency settings. Use RunConfig::builder() to construct from
external crates (struct is #[non_exhaustive]).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.streaming_mode: StreamingModeThe streaming mode for agent responses.
tool_confirmation_decisions: HashMap<String, ToolConfirmationDecision>Optional per-tool confirmation decisions for the current run. Keys are tool names.
cached_content: Option<String>Optional cached content name for automatic prompt caching.
When set by the runner’s cache lifecycle manager, agents should attach
this name to their GenerateContentConfig so the LLM provider can
reuse cached system instructions and tool definitions.
transfer_targets: Vec<String>Valid agent names this agent can transfer to (parent, peers, children).
Set by the runner when invoking agents in a multi-agent tree.
When non-empty, the transfer_to_agent tool is injected and validation
uses this list instead of only checking sub_agents.
parent_agent: Option<String>The name of the parent agent, if this agent was invoked via transfer.
Used by the agent to apply disallow_transfer_to_parent filtering.
auto_cache: boolEnable automatic prompt caching for all providers that support it.
When true (the default), the runner enables provider-level caching:
- Anthropic: sets
prompt_caching = trueon the config - Bedrock: sets
prompt_caching = Some(BedrockCacheConfig::default()) - OpenAI / DeepSeek: no action needed (caching is automatic)
- Gemini: handled separately via
ContextCacheConfig
history_max_events: Option<usize>Maximum number of recent persisted events to load at the start of a run.
None preserves the previous behavior and loads the full session
history. Set this for chat surfaces that already summarize older turns
and need predictable startup latency.
tool_concurrency: ToolConcurrencyConfigTool concurrency configuration controlling parallel tool dispatch limits, per-tool overrides, and backpressure behavior.
The default (ToolConcurrencyConfig::default()) imposes no limits,
preserving backward compatibility with the previous max_tool_concurrency: None.
record_payloads: boolWhether tracing spans may include full request, response, and tool
payloads when the record-payloads crate feature is enabled.
trace_payload_max_bytes: usizeMaximum serialized bytes recorded for tracing payload fields when full payload recording is disabled.
Implementations§
Source§impl RunConfig
impl RunConfig
Sourcepub fn builder() -> RunConfigBuilder
pub fn builder() -> RunConfigBuilder
Creates a new RunConfigBuilder initialized with default values.
Use the builder to construct a RunConfig when struct literal syntax
is unavailable (e.g., from external crates due to #[non_exhaustive]).
§Example
use adk_core::{RunConfig, StreamingMode};
let config = RunConfig::builder()
.streaming_mode(StreamingMode::None)
.auto_cache(false)
.build();
assert_eq!(config.streaming_mode, StreamingMode::None);
assert!(!config.auto_cache);