pub struct RunConfig {Show 14 fields
pub streaming_mode: StreamingMode,
pub tool_confirmation_decisions: HashMap<String, ToolConfirmationDecision>,
pub tool_confirmation_fingerprints: HashMap<String, String>,
pub tool_confirmation_handler: Option<Arc<dyn ToolConfirmationHandler>>,
pub runtime_toolsets: Vec<RuntimeToolset>,
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,
pub max_transfer_depth: Option<u32>,
}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
Fields§
§streaming_mode: StreamingModeThe streaming mode for agent responses.
tool_confirmation_decisions: HashMap<String, ToolConfirmationDecision>Static confirmation decisions for the current run, keyed by function call ID.
The ID is the one reported on
ToolConfirmationRequest::function_call_id, so a decision authorizes the
exact call it was requested for. A decision under a tool name is not
consulted, because one name can cover materially different calls — a
delete_file approval for a scratch path must not authorize a call that
targets a different path.
Use tool_confirmation_fingerprints
to additionally bind a decision to the arguments it was granted for. For
name-wide or policy-driven decisions, supply a
tool_confirmation_handler instead.
tool_confirmation_fingerprints: HashMap<String, String>Optional argument binding for entries in
tool_confirmation_decisions, keyed by
the same function call ID.
The value is the fingerprint produced by tool_call_fingerprint for the
call the decision was granted for. When an entry is present and the actual
call does not match it, the decision is ignored and the call is treated as
unconfirmed — the safe direction. Use this when a decision travels through
an untrusted round trip, such as a browser, where the arguments could be
changed while the call ID is replayed.
tool_confirmation_handler: Option<Arc<dyn ToolConfirmationHandler>>Optional live decision source for confirmations that have no static
entry in tool_confirmation_decisions.
runtime_toolsets: Vec<RuntimeToolset>Toolsets made available only for this invocation.
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.
max_transfer_depth: Option<u32>Maximum number of agent-to-agent transfers allowed in a single run.
Prevents infinite transfer loops when agents transfer back and forth.
Defaults to 10 when None.
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
§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);Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for RunConfig
impl !UnwindSafe for RunConfig
impl Freeze for RunConfig
impl Send for RunConfig
impl Sync for RunConfig
impl Unpin for RunConfig
impl UnsafeUnpin for RunConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeSend for Twhere
T: Send,
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.