{"slug": "claude-message-threads-are-fast-until-your-agent-waits-5-minutes", "title": "Claude Message Threads Are Fast Until Your Agent Waits 5 Minutes", "summary": "Anthropic shipped message threads for the Claude API, cutting median time to first token by roughly 35% on 500k–1M token requests and shrinking long-session payloads from about 800 KB to under 2 KB, but the feature expires threads five minutes after the last request and does not reduce token usage or cost. Developers on r/ClaudeAI flagged the idle TTL as the main edge case, since slow tool calls or human approval steps force a full conversation replay, and noted threads are append-only with system and tools fields locked at creation.", "body_md": "Someone on r/ClaudeAI summed the whole launch up in five words: \"5 minutes ttl is such BS.\"\n\nThat was one of the top comments under Anthropic's message threads announcement, posted hours after it went live.\n\nThe feature itself is clean. You send the conversation once. Every turn after that sends only the new message plus a `previous_message_id`.\n\nAnthropic says median time to first token drops about 35% on requests between 500k and 1M tokens.\n\nAnd the API throws your thread away 5 minutes after the last request.\n\nI read that comment and thought, yeah, that is the story. Not the latency win. The timer.\n\nBecause the numbers are real. This shipped on by default for most Claude Code users, so it is already running under thousands of them right now.\n\nPayloads in long sessions drop from around 800 KB to under 2 KB. That is not marketing math.\n\nBut the expiry window is where the excitement hits the pavement. And almost nobody writing about this led with it.\n\nHere's what i mean.\n\nThe headline everyone repeats is the 35% faster first token. The number almost nobody repeats is that your bill does not move.\n\nStraight from the docs:\n\nClaude still reads the full conversation on every turn, so token usage stays the same.\n\nSo message threads are a latency feature. Not a cost feature. If you want a cheaper bill, you still need prompt caching with breakpoints placed by hand.\n\nThat is fine. But the framing matters.\n\nHalf the posts i read treated this as a way to cut long context spend. It isn't. It just stops you from uploading 800 KB of JSON every few seconds.\n\nHere's a question people always ask. What happens if my tool call takes longer than the thread lives?\n\nYou replay the whole thing. Full conversation, new create request, new thread id.\n\nOne developer in that Reddit thread ran this on a 600k context loop and saw about 30% better TTFT, close to Anthropic's claim.\n\nBut their tool calls sometimes stalled 3 to 4 minutes waiting on slow endpoints. Add a human approval click and the window is gone.\n\nAnother developer called the idle TTL the edge case to watch. Their words, more or less.\n\nA multi repo test suite or a database migration will blow through 5 minutes and you silently pay the full re upload again.\n\nOne commenter pointed out the 5 minute window lines up with the default prompt cache TTL. Slow tool calls were already paying for a cold read. Nothing changed there.\n\nThat is a fair defense.\n\nBut a fair defense is not a feature.\n\n|  | Claude threads | OpenAI Responses | \n|---|---|---|\n| Resume by | `previous_message_id` | `previous_response_id` | \n| Stored for | 5 min idle | 30 days default | \n| Written to disk | No | Yes | \n| Works with ZDR | Unclear | Forced off | \n\nTwo commenters asked the obvious thing. Isn't this just OpenAI's Responses API a year later?\n\nPartly. The shape is the same. The retention is not.\n\nOpenAI keeps response objects 30 days by default and lets you turn storage off. Anthropic keeps your thread encrypted in memory, writes nothing to disk, and deletes it 5 minutes after the last request.\n\nThat is a real difference in how the two companies think about holding your data. Make of it what you will.\n\nAnd if your team requires zero data retention, one commenter said this whole feature means very little to you.\n\nMost tutorials tell you to add the thread param and go. Then you hit `thread_fingerprint_mismatch` and lose an afternoon.\n\nThreads split fields into three buckets:\n\n`system` and `tools`. Send either on a continue request, even as null, and you get a 400.\nWant to change the system prompt mid conversation? Start a new thread. There is no edit.\n\nA thread is append only, and each response id can be continued exactly once.\n\nI like this constraint. It is honest about what a thread is. But it will surprise anyone who treats it like a chat object they can mutate.\n\nThe first time i read \"your application stays the source of truth,\" i skimmed past it. Then i thought about what it means at 3am.\n\nIt means no response, create or continue, tells you whether the API stored that turn.\n\nYou find out on the next request, when you get a 404 with `thread_not_found`. And the error does not say why.\n\nExpired. Not stored. Written by a fallback model.\n\nDifferent workspace. Different service account.\n\nSo you keep every message yourself and you build the replay path on day one. Not later.\n\nThe SDK helper handles it, but only while the helper object is alive. It holds the conversation in memory and saves it nowhere else.\n\nRestart your process and that history is gone.\n\nNow the part that has nothing to do with any of this.\n\nI spent two hours in Anthropic's docs one evening trying to work out why my cache breakpoints kept failing. Read the whole page. Took notes.\n\nFelt smart. Then found a single line in a table saying a threaded request can carry at most 4 breakpoints. The top level one counts as one of them.\n\nFour. That was it. That was the bug.\n\nI have done this maybe a dozen times now. The answer is always in a table I scrolled past.\n\nMy coworker keeps a folder of screenshots of docs he almost missed. He calls it his graveyard. It is 300 images deep and every one of them saved him a day.\n\nThere is something humbling about paying for speed with a footnote.\n\nMost people don't need this.\n\nIf your agent runs 5 turns and then stops, the thread never expires and never saves you anything worth measuring.\n\nIf you are under 100k tokens of context, the upload was not your bottleneck. Your model choice was.\n\nAnd if a human has to approve steps, the 5 minute window is working against you. You will replay constantly and feel like the feature is broken.\n\nIt isn't. It was built for tight machine loops, not for people thinking.\n\nThe honest read is that this is infrastructure for coding agents and computer use loops. Screenshots stay on the server instead of getting re uploaded every turn.\n\nThat is the real win, and it is a good one.\n\nFor everyone else, plain prompt caching still does the job.\n\nI keep coming back to that Reddit commenter who said they would not be surprised if the cache actually lives longer than 5 minutes and Anthropic just doesn't hand it to you.\n\nI don't think that's true. But i understand the instinct.\n\nWhen a feature saves you time and costs you nothing, you start asking where the catch is. Here the catch is written in the docs in plain text, and it is a clock.\n\nFive minutes is enough for a machine. It is not enough for a person who stepped away to get coffee.\n\nMaybe that is the point. Maybe the API is telling us who it was built for.", "url": "https://wpnews.pro/news/claude-message-threads-are-fast-until-your-agent-waits-5-minutes", "canonical_source": "https://dev.to/dishant0406/claude-message-threads-are-fast-until-your-agent-waits-5-minutes-ip2", "published_at": "2026-11-03 19:47:08+00:00", "updated_at": "2026-11-03 19:53:13.812369+00:00", "lang": "en", "topics": ["large-language-models", "ai-agents", "ai-tools", "developer-tools", "ai-infrastructure"], "entities": ["Anthropic", "Claude", "Claude Code", "OpenAI", "Responses API", "r/ClaudeAI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/claude-message-threads-are-fast-until-your-agent-waits-5-minutes", "markdown": "https://wpnews.pro/news/claude-message-threads-are-fast-until-your-agent-waits-5-minutes.md", "text": "https://wpnews.pro/news/claude-message-threads-are-fast-until-your-agent-waits-5-minutes.txt", "jsonld": "https://wpnews.pro/news/claude-message-threads-are-fast-until-your-agent-waits-5-minutes.jsonld"}}