From f8efbc4ac556e6b65aaa63e20cd3b9663f9dc2c4 Mon Sep 17 00:00:00 2001 From: carl-auctane <82907859+carl-auctane@users.noreply.github.com> Date: Tue, 12 May 2026 13:51:07 -0500 Subject: [PATCH] fix(bedrock): cache trailing message for stable prefix across agent turns (#8916) Signed-off-by: Carl Youngblood Signed-off-by: Douwe Osinga Co-authored-by: Douwe Osinga --- crates/goose/src/providers/bedrock.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/crates/goose/src/providers/bedrock.rs b/crates/goose/src/providers/bedrock.rs index a8b4fc3c36..4a5a733ba7 100644 --- a/crates/goose/src/providers/bedrock.rs +++ b/crates/goose/src/providers/bedrock.rs @@ -232,15 +232,7 @@ impl BedrockProvider { let visible_messages: Vec<&Message> = messages.iter().filter(|m| m.is_agent_visible()).collect(); - // Cache the earliest messages (not most recent) because prompt caching - // requires exact prefix matching — caching recent messages would shift - // positions each turn, causing misses. - const MESSAGE_CACHE_BUDGET: usize = 3; - let cache_count = if enable_caching { - visible_messages.len().min(MESSAGE_CACHE_BUDGET) - } else { - 0 - }; + let last_idx = visible_messages.len().saturating_sub(1); let mut request = self .client @@ -251,7 +243,9 @@ impl BedrockProvider { visible_messages .iter() .enumerate() - .map(|(idx, m)| to_bedrock_message_with_caching(m, idx < cache_count)) + .map(|(idx, m)| { + to_bedrock_message_with_caching(m, enable_caching && idx == last_idx) + }) .collect::>()?, ));