claudetool: disable prompt caching for one-shot subconvos
diff --git a/claudetool/codereview/llm_review.go b/claudetool/codereview/llm_review.go
index 541ee52..15205e7 100644
--- a/claudetool/codereview/llm_review.go
+++ b/claudetool/codereview/llm_review.go
@@ -31,6 +31,7 @@
 
 	info := conversation.ToolCallInfoFromContext(ctx)
 	convo := info.Convo.SubConvo()
+	convo.PromptCaching = false
 	convo.SystemPrompt = strings.TrimSpace(llmCodereviewPrompt)
 	initialMessage := llm.UserStringMessage("<diff>\n" + string(out) + "\n</diff>")
 
diff --git a/claudetool/keyword.go b/claudetool/keyword.go
index 5d9f155..f16338f 100644
--- a/claudetool/keyword.go
+++ b/claudetool/keyword.go
@@ -126,6 +126,7 @@
 	info := conversation.ToolCallInfoFromContext(ctx)
 	convo := info.Convo.SubConvo()
 	convo.SystemPrompt = strings.TrimSpace(keywordSystemPrompt)
+	convo.PromptCaching = false
 
 	initialMessage := llm.Message{
 		Role: llm.MessageRoleUser,
diff --git a/claudetool/pre-commit.go b/claudetool/pre-commit.go
index 7282948..7c93f0d 100644
--- a/claudetool/pre-commit.go
+++ b/claudetool/pre-commit.go
@@ -41,6 +41,7 @@
 
 	info := conversation.ToolCallInfoFromContext(ctx)
 	sub := info.Convo.SubConvo()
+	sub.PromptCaching = false
 
 	sub.SystemPrompt = `You are an expert Git commit analyzer.