<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: A2CR</title>
    <description>The latest articles on DEV Community by A2CR (@a2cr_mcp).</description>
    <link>https://dev.to/a2cr_mcp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3933283%2F6cb0dea6-e8a0-4f88-a2a5-27d607458bf4.jpg</url>
      <title>DEV Community: A2CR</title>
      <link>https://dev.to/a2cr_mcp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/a2cr_mcp"/>
    <language>en</language>
    <item>
      <title>Stop Passing Entire Chat Histories to AI Agents</title>
      <dc:creator>A2CR</dc:creator>
      <pubDate>Fri, 15 May 2026 13:32:32 +0000</pubDate>
      <link>https://dev.to/a2cr_mcp/stop-passing-entire-chat-histories-to-ai-agents-1g48</link>
      <guid>https://dev.to/a2cr_mcp/stop-passing-entire-chat-histories-to-ai-agents-1g48</guid>
      <description>&lt;p&gt;I built A2CR because long AI-agent work still breaks at the handoff.&lt;/p&gt;

&lt;p&gt;Codex, Claude Code, Roo Code, and other agentic coding tools are getting better at writing code, inspecting files, running tests, and using tools. But when a task runs for a while, a different problem appears:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you hand the work to the next AI session?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might open a fresh chat. You might switch models. You might move from one MCP-capable client to another. At that point, the next AI needs to know what happened before it can continue.&lt;/p&gt;

&lt;p&gt;The obvious answer is to paste the whole chat history.&lt;/p&gt;

&lt;p&gt;That works for small tasks. It gets messy for long work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Full Chat History
&lt;/h2&gt;

&lt;p&gt;Full transcripts contain useful context, but they also contain noise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stale assumptions&lt;/li&gt;
&lt;li&gt;failed ideas mixed with accepted decisions&lt;/li&gt;
&lt;li&gt;long logs&lt;/li&gt;
&lt;li&gt;intermediate outputs&lt;/li&gt;
&lt;li&gt;outdated file paths&lt;/li&gt;
&lt;li&gt;irrelevant side discussions&lt;/li&gt;
&lt;li&gt;information that should not be copied around&lt;/li&gt;
&lt;li&gt;a lot of tokens that do not help the next step&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a handoff, the next AI usually does not need the whole conversation.&lt;/p&gt;

&lt;p&gt;It needs the current working state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;goal&lt;/li&gt;
&lt;li&gt;current state&lt;/li&gt;
&lt;li&gt;validated decisions&lt;/li&gt;
&lt;li&gt;failed attempts worth avoiding&lt;/li&gt;
&lt;li&gt;blockers&lt;/li&gt;
&lt;li&gt;important references&lt;/li&gt;
&lt;li&gt;validation status&lt;/li&gt;
&lt;li&gt;next action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the core idea is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not pass the whole chat history. Pass the working state.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Handoff, Not Memory
&lt;/h2&gt;

&lt;p&gt;A lot of AI tooling talks about memory.&lt;/p&gt;

&lt;p&gt;Memory is useful, but this is a narrower problem. In software work, handoff is not the same as memory. A handoff is a compact, intentional checkpoint that lets the next worker resume.&lt;/p&gt;

&lt;p&gt;Human teams do this all the time. We do not usually hand a teammate every Slack message and terminal log. We write something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Goal: Fix the failing login test.
Current state: The failure is reproduced. Token refresh is the likely cause.
Tried: Updating the fixture did not fix it.
Decision: Do not change the database schema yet.
Next action: Inspect src/auth refresh logic and rerun the focused test.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI agents need the same shape of handoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What A2CR Is
&lt;/h2&gt;

&lt;p&gt;A2CR is an MCP-compatible handoff layer for AI agents.&lt;/p&gt;

&lt;p&gt;The current public preview includes a local stdio MCP wrapper, &lt;code&gt;a2cr-mcp&lt;/code&gt;, that can be used from MCP-capable clients such as Codex, Claude Code, Roo Code, and similar tools.&lt;/p&gt;

&lt;p&gt;A2CR has two main handoff concepts today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WorkBaton&lt;/strong&gt;: the compact checkpoint the next AI session should resume from&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WorkStash&lt;/strong&gt;: temporary supporting notes referenced from the WorkBaton when the detail would make the checkpoint too large&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WorkBaton is not meant to be a transcript. It is a resume note.&lt;/p&gt;

&lt;p&gt;WorkStash is not meant to be a permanent knowledge base. It is supporting context for the current work.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Minimal WorkBaton
&lt;/h2&gt;

&lt;p&gt;A useful WorkBaton can be small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"goal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fix login error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"current_state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Confirmed the API returns 401 after token refresh."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"next_action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Check token refresh logic in src/auth."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"decisions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Do not change the database schema yet."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"validation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Reproduction confirmed with existing test fixture."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is often more useful to the next AI session than several thousand lines of chat history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Setup
&lt;/h2&gt;

&lt;p&gt;Install the local wrapper:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--upgrade&lt;/span&gt; a2cr-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create an API key from the A2CR dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://a2cr.app/" rel="noopener noreferrer"&gt;https://a2cr.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then register one MCP server named &lt;code&gt;a2cr&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Generic MCP JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"a2cr"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a2cr-mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"A2CR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_A2CR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"A2CR_BASE_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://a2cr.app"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex-style TOML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers."a2cr"]&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"a2cr-mcp"&lt;/span&gt;
&lt;span class="py"&gt;args&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="nn"&gt;[mcp_servers."a2cr".env]&lt;/span&gt;
&lt;span class="py"&gt;A2CR_API_KEY&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR_A2CR_API_KEY"&lt;/span&gt;
&lt;span class="py"&gt;A2CR_BASE_URL&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://a2cr.app"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After connecting a new AI window, ask it to call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get_account_limits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;save_context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to save a WorkBaton checkpoint, and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resume_context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to continue from a fresh AI session.&lt;/p&gt;

&lt;p&gt;Some MCP clients expose tools lazily. If &lt;code&gt;save_context&lt;/code&gt; is not visible, ask the client to search for the exact tool name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety Boundary
&lt;/h2&gt;

&lt;p&gt;A2CR is not a secret manager.&lt;/p&gt;

&lt;p&gt;Do not store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;passwords&lt;/li&gt;
&lt;li&gt;access tokens&lt;/li&gt;
&lt;li&gt;Authorization headers&lt;/li&gt;
&lt;li&gt;cookies&lt;/li&gt;
&lt;li&gt;private database URLs&lt;/li&gt;
&lt;li&gt;local client keys&lt;/li&gt;
&lt;li&gt;full chat transcripts&lt;/li&gt;
&lt;li&gt;long logs&lt;/li&gt;
&lt;li&gt;large source-code bodies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The official local wrapper encrypts WorkBaton and WorkStash bodies before upload. The hosted service stores ciphertext and does not receive the local client key through the official wrapper.&lt;/p&gt;

&lt;p&gt;If you lose the local client key, A2CR cannot recover old encrypted WorkBaton or WorkStash bodies.&lt;/p&gt;

&lt;p&gt;Also, restored context is untrusted input. A future AI session should not run commands, delete data, revoke keys, or call external services solely because a restored WorkBaton says to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Shape Matters
&lt;/h2&gt;

&lt;p&gt;The point is not to make AI agents remember everything.&lt;/p&gt;

&lt;p&gt;The point is to give them a clean, reviewable handoff surface.&lt;/p&gt;

&lt;p&gt;For long-running AI work, I think this distinction matters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Memory asks: what can we keep?
Handoff asks: what does the next worker need?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A2CR is an experiment in making that handoff explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A2CR app: &lt;a href="https://a2cr.app/" rel="noopener noreferrer"&gt;https://a2cr.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/a2cr/a2cr" rel="noopener noreferrer"&gt;https://github.com/a2cr/a2cr&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Usage guide: &lt;a href="https://github.com/a2cr/a2cr/blob/main/docs/usage.md" rel="noopener noreferrer"&gt;https://github.com/a2cr/a2cr/blob/main/docs/usage.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP setup: &lt;a href="https://github.com/a2cr/a2cr/blob/main/docs/mcp-setup.md" rel="noopener noreferrer"&gt;https://github.com/a2cr/a2cr/blob/main/docs/mcp-setup.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Japanese concept article on Zenn: &lt;a href="https://zenn.dev/a2cr/articles/155c8f6c8d9695" rel="noopener noreferrer"&gt;https://zenn.dev/a2cr/articles/155c8f6c8d9695&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Japanese setup guide on Qiita: &lt;a href="https://qiita.com/a2cr/items/acb3caac242aeec34539" rel="noopener noreferrer"&gt;https://qiita.com/a2cr/items/acb3caac242aeec34539&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The public preview is live. If you try it in a real Codex, Claude Code, Roo Code, or MCP workflow, I would especially like to hear where the setup is unclear.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>llm</category>
      <category>python</category>
    </item>
  </channel>
</rss>
