<?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: Vishesh Yadav</title>
    <description>The latest articles on DEV Community by Vishesh Yadav (@vishesh_yadav_1dd30a79ab5).</description>
    <link>https://dev.to/vishesh_yadav_1dd30a79ab5</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3475586%2F283d05b8-6a2d-456f-b7bf-055c90b5fa5a.jpg</url>
      <title>DEV Community: Vishesh Yadav</title>
      <link>https://dev.to/vishesh_yadav_1dd30a79ab5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vishesh_yadav_1dd30a79ab5"/>
    <language>en</language>
    <item>
      <title>Your AI Coding Agent Has Amnesia. Somehow You Became the Memory.</title>
      <dc:creator>Vishesh Yadav</dc:creator>
      <pubDate>Wed, 12 Aug 2026 21:27:58 +0000</pubDate>
      <link>https://dev.to/vishesh_yadav_1dd30a79ab5/your-ai-coding-agent-has-amnesia-somehow-you-became-the-memory-2n5n</link>
      <guid>https://dev.to/vishesh_yadav_1dd30a79ab5/your-ai-coding-agent-has-amnesia-somehow-you-became-the-memory-2n5n</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhkpqhwdhnen6y76nc9tl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhkpqhwdhnen6y76nc9tl.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
You are fixing a bug.&lt;/p&gt;

&lt;p&gt;Not an interesting bug.&lt;/p&gt;

&lt;p&gt;An authentication bug.&lt;/p&gt;

&lt;p&gt;Which means somewhere, somebody wanted a user to remain logged in, and now six files are involved.&lt;/p&gt;

&lt;p&gt;You open Claude Code.&lt;/p&gt;

&lt;p&gt;Claude reads the repository.&lt;/p&gt;

&lt;p&gt;It checks the authentication flow.&lt;/p&gt;

&lt;p&gt;It finds the refresh-token logic.&lt;/p&gt;

&lt;p&gt;It reads some tests.&lt;/p&gt;

&lt;p&gt;It changes &lt;code&gt;auth/session.py&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;One test fails.&lt;/p&gt;

&lt;p&gt;Claude investigates.&lt;/p&gt;

&lt;p&gt;It reads another file.&lt;/p&gt;

&lt;p&gt;It discovers that the test is not really testing what its name suggests.&lt;/p&gt;

&lt;p&gt;Normal software development.&lt;/p&gt;

&lt;p&gt;Forty-seven messages later, something beautiful happens.&lt;/p&gt;

&lt;p&gt;Claude finally understands the problem.&lt;/p&gt;

&lt;p&gt;Not approximately.&lt;/p&gt;

&lt;p&gt;Not “here are three possible causes.”&lt;/p&gt;

&lt;p&gt;It actually understands it.&lt;/p&gt;

&lt;p&gt;You understand it.&lt;/p&gt;

&lt;p&gt;Claude understands it.&lt;/p&gt;

&lt;p&gt;The repository understands nothing because it is a folder.&lt;/p&gt;

&lt;p&gt;But still.&lt;/p&gt;

&lt;p&gt;For one brief moment, there is alignment.&lt;/p&gt;

&lt;p&gt;Then Claude says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You've hit your usage limit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Excellent.&lt;/p&gt;

&lt;p&gt;The only participant who understood the problem has died.&lt;/p&gt;




&lt;h2&gt;
  
  
  So you open Codex
&lt;/h2&gt;

&lt;p&gt;Because we live in the future.&lt;/p&gt;

&lt;p&gt;We have multiple artificial intelligences capable of writing software.&lt;/p&gt;

&lt;p&gt;Surely this should help.&lt;/p&gt;

&lt;p&gt;You open the same repository in Codex.&lt;/p&gt;

&lt;p&gt;Codex looks at you with the optimism of a new employee on Monday morning.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What would you like to work on?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now you realise something.&lt;/p&gt;

&lt;p&gt;Claude has lost the context.&lt;/p&gt;

&lt;p&gt;Codex never had the context.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;you&lt;/strong&gt; have the context.&lt;/p&gt;

&lt;p&gt;Congratulations.&lt;/p&gt;

&lt;p&gt;You are now middleware.&lt;/p&gt;

&lt;p&gt;Your job was software engineering.&lt;/p&gt;

&lt;p&gt;Your new job is explaining one artificial intelligence to another artificial intelligence.&lt;/p&gt;

&lt;p&gt;We automated programming and somehow created clerical work.&lt;/p&gt;




&lt;h1&gt;
  
  
  The context-window promotion
&lt;/h1&gt;

&lt;p&gt;So you start typing.&lt;/p&gt;

&lt;p&gt;“Well, basically, we're fixing refresh-token rotation…”&lt;/p&gt;

&lt;p&gt;Then you explain the architecture.&lt;/p&gt;

&lt;p&gt;Then what Claude discovered.&lt;/p&gt;

&lt;p&gt;Then why the obvious fix didn't work.&lt;/p&gt;

&lt;p&gt;Then which files changed.&lt;/p&gt;

&lt;p&gt;Then the test that's still failing.&lt;/p&gt;

&lt;p&gt;Then the thing Claude tried before that.&lt;/p&gt;

&lt;p&gt;Then the thing that looked wrong but actually wasn't wrong.&lt;/p&gt;

&lt;p&gt;Then the thing that looked correct but was very wrong.&lt;/p&gt;

&lt;p&gt;Codex reads all this.&lt;/p&gt;

&lt;p&gt;You say:&lt;/p&gt;

&lt;p&gt;“Got it?”&lt;/p&gt;

&lt;p&gt;Codex says:&lt;/p&gt;

&lt;p&gt;“Got it.”&lt;/p&gt;

&lt;p&gt;You have no mechanism to verify this.&lt;/p&gt;

&lt;p&gt;This is now a trust-based economy.&lt;/p&gt;

&lt;p&gt;And the particularly stupid part is that most of this information already exists.&lt;/p&gt;

&lt;p&gt;The files exist.&lt;/p&gt;

&lt;p&gt;The Git diff exists.&lt;/p&gt;

&lt;p&gt;The tool calls happened.&lt;/p&gt;

&lt;p&gt;The errors happened.&lt;/p&gt;

&lt;p&gt;The conversation happened.&lt;/p&gt;

&lt;p&gt;The model responses happened.&lt;/p&gt;

&lt;p&gt;Your computer witnessed everything.&lt;/p&gt;

&lt;p&gt;But when you change coding agents, everybody behaves as though the previous forty minutes occurred in another civilisation.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Elephant&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not because AI agents need more intelligence.&lt;/p&gt;

&lt;p&gt;They need memory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vishesh9131/elephant?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Elephant on GitHub&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What Elephant does
&lt;/h1&gt;

&lt;p&gt;The basic idea is embarrassingly simple.&lt;/p&gt;

&lt;p&gt;While your coding agent is working, Elephant records what is happening.&lt;/p&gt;

&lt;p&gt;Not after the session.&lt;/p&gt;

&lt;p&gt;Not when the model is almost dead.&lt;/p&gt;

&lt;p&gt;While it is happening.&lt;/p&gt;

&lt;p&gt;Prompts.&lt;/p&gt;

&lt;p&gt;Responses.&lt;/p&gt;

&lt;p&gt;Tool calls.&lt;/p&gt;

&lt;p&gt;Failures.&lt;/p&gt;

&lt;p&gt;File changes.&lt;/p&gt;

&lt;p&gt;Current objective.&lt;/p&gt;

&lt;p&gt;Git state.&lt;/p&gt;

&lt;p&gt;Recent session events.&lt;/p&gt;

&lt;p&gt;All of it goes into a local append-only journal.&lt;/p&gt;

&lt;p&gt;Then Elephant periodically creates what I call a &lt;strong&gt;recovery capsule&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So instead of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude:
You've hit your usage limit.

Codex:
What are we working on?

You:
Okay. Sit down.
It started yesterday...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you get 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;Claude:
You've hit your usage limit.

        [open same repo in Codex]

Elephant:
Recovered previous Claude Code session.

Objective:
Fix refresh-token rotation.

State:
Implementation complete.
One integration test still failing.

Changed:
auth/session.py
tests/test_rotation.py

Codex:
I found the failing test.
Continuing from there.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is basically Elephant.&lt;/p&gt;

&lt;p&gt;The dead model does not have to explain what it was doing.&lt;/p&gt;

&lt;p&gt;Elephant was taking notes while it was alive.&lt;/p&gt;

&lt;p&gt;This turns out to be important.&lt;/p&gt;




&lt;h1&gt;
  
  
  “Why not just ask Claude to summarize before switching?”
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;You can.&lt;/p&gt;

&lt;p&gt;This works beautifully under one condition:&lt;/p&gt;

&lt;p&gt;Claude must still be alive.&lt;/p&gt;

&lt;p&gt;Unfortunately the message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You've hit your usage limit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;usually does not arrive three minutes before the usage limit.&lt;/p&gt;

&lt;p&gt;There is no:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You have 847 tokens remaining.

Please settle your affairs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model does not gather its family.&lt;/p&gt;

&lt;p&gt;It does not write a will.&lt;/p&gt;

&lt;p&gt;It does not say:&lt;/p&gt;

&lt;p&gt;“Tell Codex the bug is in &lt;code&gt;rotate_token()&lt;/code&gt;.”&lt;/p&gt;

&lt;p&gt;It just stops.&lt;/p&gt;

&lt;p&gt;Asking a model at quota to summarize the session is like installing a fire alarm after the building has burned down.&lt;/p&gt;

&lt;p&gt;The summary would have been useful.&lt;/p&gt;

&lt;p&gt;Earlier.&lt;/p&gt;

&lt;p&gt;So Elephant doesn't depend on a dying model remembering to preserve its memory.&lt;/p&gt;

&lt;p&gt;It journals continuously.&lt;/p&gt;

&lt;p&gt;After completed turns, it checkpoints.&lt;/p&gt;

&lt;p&gt;Before compaction, it checkpoints.&lt;/p&gt;

&lt;p&gt;At session end, it checkpoints.&lt;/p&gt;

&lt;p&gt;When the host exposes interruption or quota-failure events, Elephant records those too.&lt;/p&gt;

&lt;p&gt;If the quota disappears without warning, the useful state is already on disk.&lt;/p&gt;

&lt;p&gt;There is no heroic final message.&lt;/p&gt;

&lt;p&gt;I don't trust software that requires heroism.&lt;/p&gt;




&lt;h1&gt;
  
  
  There is another weird assumption in AI coding tools
&lt;/h1&gt;

&lt;p&gt;We talk about Claude Code, Codex, Gemini, Copilot, OpenCode and everything else as if they are completely separate working environments.&lt;/p&gt;

&lt;p&gt;But from the developer's perspective, they often aren't.&lt;/p&gt;

&lt;p&gt;The project is the same.&lt;/p&gt;

&lt;p&gt;The Git repository is the same.&lt;/p&gt;

&lt;p&gt;The bug is the same.&lt;/p&gt;

&lt;p&gt;The terminal is the same.&lt;/p&gt;

&lt;p&gt;The developer is unfortunately still the same.&lt;/p&gt;

&lt;p&gt;Only the model changed.&lt;/p&gt;

&lt;p&gt;Yet changing the model often resets the understanding of the work.&lt;/p&gt;

&lt;p&gt;Imagine doing this with human developers.&lt;/p&gt;

&lt;p&gt;Developer A works on a bug for four hours.&lt;/p&gt;

&lt;p&gt;At 4 PM his shift ends.&lt;/p&gt;

&lt;p&gt;Developer B sits at the same desk.&lt;/p&gt;

&lt;p&gt;You delete all of Developer A's notes.&lt;/p&gt;

&lt;p&gt;Then B says:&lt;/p&gt;

&lt;p&gt;“So what does this company do?”&lt;/p&gt;

&lt;p&gt;We would call this poor management.&lt;/p&gt;

&lt;p&gt;With AI we call it a new session.&lt;/p&gt;




&lt;h1&gt;
  
  
  One memory, multiple agents
&lt;/h1&gt;

&lt;p&gt;Elephant uses a shared local store:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.elephant/
├── elephant.db
└── transcripts/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Capture-capable integrations write into the same versioned event format.&lt;/p&gt;

&lt;p&gt;So the memory created while working in one supported harness can be recovered by another.&lt;/p&gt;

&lt;p&gt;The architecture is roughly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────────┐
│ Coding agents                                    │
│ Claude · Codex · Hermes · OpenCode · Pi · ...   │
├──────────────────────────────────────────────────┤
│ Elephant                                         │
│ redact · journal · checkpoint · inspect Git      │
├──────────────────────────────────────────────────┤
│ Continuation                                     │
│ startup recovery · resume                        │
└──────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important architectural decision here is what Elephant &lt;strong&gt;doesn't&lt;/strong&gt; do.&lt;/p&gt;

&lt;p&gt;It doesn't pretend every coding agent has the same API.&lt;/p&gt;

&lt;p&gt;Because they don't.&lt;/p&gt;

&lt;p&gt;That abstraction would look elegant for approximately three days.&lt;/p&gt;

&lt;p&gt;Then one provider would add an event.&lt;/p&gt;

&lt;p&gt;Another would rename a hook.&lt;/p&gt;

&lt;p&gt;A third would expose no hook at all.&lt;/p&gt;

&lt;p&gt;And eventually the universal interface would contain seventeen optional fields called things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;maybe_session_end_v2_final&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead, Elephant has one memory protocol and thin native adapters around it.&lt;/p&gt;

&lt;p&gt;The hosts remain different.&lt;/p&gt;

&lt;p&gt;The memory doesn't have to.&lt;/p&gt;




&lt;h1&gt;
  
  
  What actually gets remembered?
&lt;/h1&gt;

&lt;p&gt;A useful handoff does not require the entire conversation to be shoved into another model.&lt;/p&gt;

&lt;p&gt;That would technically preserve context in the same way moving your entire house preserves your toothbrush.&lt;/p&gt;

&lt;p&gt;Elephant focuses on the state required to continue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;current objective;&lt;/li&gt;
&lt;li&gt;last completed state;&lt;/li&gt;
&lt;li&gt;last prompt and model response;&lt;/li&gt;
&lt;li&gt;modified files;&lt;/li&gt;
&lt;li&gt;current Git evidence;&lt;/li&gt;
&lt;li&gt;recent tool/model failures;&lt;/li&gt;
&lt;li&gt;recent session events;&lt;/li&gt;
&lt;li&gt;transcript references when the host exposes them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The distinction between &lt;strong&gt;conversation history&lt;/strong&gt; and &lt;strong&gt;working state&lt;/strong&gt; matters.&lt;/p&gt;

&lt;p&gt;If I ask an agent to fix authentication and we spend thirty messages discovering that the problem is an incorrect cookie domain, the next agent doesn't necessarily need all thirty messages.&lt;/p&gt;

&lt;p&gt;It needs to know:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Objective:
Fix auth refresh failure.

Finding:
Cookie domain is incorrect in production config.

Changed:
config/auth.ts

Remaining:
Integration test still failing on refresh.

Git:
Working tree contains uncommitted changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is context.&lt;/p&gt;

&lt;p&gt;The forty-seven-message archaeological record is evidence.&lt;/p&gt;

&lt;p&gt;Useful sometimes.&lt;/p&gt;

&lt;p&gt;Not the first thing you need.&lt;/p&gt;




&lt;h1&gt;
  
  
  Git gets the final vote
&lt;/h1&gt;

&lt;p&gt;Memory systems have a dangerous tendency.&lt;/p&gt;

&lt;p&gt;They remember something that &lt;em&gt;was&lt;/em&gt; true and then confidently tell you it &lt;em&gt;is&lt;/em&gt; true.&lt;/p&gt;

&lt;p&gt;This is especially bad in programming because the repository has the annoying habit of changing.&lt;/p&gt;

&lt;p&gt;Suppose Claude modifies three files.&lt;/p&gt;

&lt;p&gt;Elephant checkpoints.&lt;/p&gt;

&lt;p&gt;Then you manually revert one.&lt;/p&gt;

&lt;p&gt;Then you open Codex.&lt;/p&gt;

&lt;p&gt;What should happen?&lt;/p&gt;

&lt;p&gt;Option A:&lt;/p&gt;

&lt;p&gt;Elephant believes its memory and tells Codex the old file still contains Claude's change.&lt;/p&gt;

&lt;p&gt;Option B:&lt;/p&gt;

&lt;p&gt;Elephant checks reality.&lt;/p&gt;

&lt;p&gt;Elephant chooses B.&lt;/p&gt;

&lt;p&gt;Recovery compares the stored capsule's Git metadata with the live worktree.&lt;/p&gt;

&lt;p&gt;The files on disk win.&lt;/p&gt;

&lt;p&gt;Because memory is evidence.&lt;/p&gt;

&lt;p&gt;The repository is reality.&lt;/p&gt;

&lt;p&gt;This is also a surprisingly useful rule outside software engineering.&lt;/p&gt;

&lt;p&gt;But this is DEV Community, so we'll pretend I only meant Git.&lt;/p&gt;




&lt;h1&gt;
  
  
  What happens when you're at 98% quota?
&lt;/h1&gt;

&lt;p&gt;Nothing.&lt;/p&gt;

&lt;p&gt;Because Elephant probably doesn't know you're at 98%.&lt;/p&gt;

&lt;p&gt;And neither does your plugin.&lt;/p&gt;

&lt;p&gt;This sounds like a missing feature until you notice the alternative is lying.&lt;/p&gt;

&lt;p&gt;Most coding harnesses do not expose an exact subscription percentage.&lt;/p&gt;

&lt;p&gt;So Elephant stores quota information as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exact
estimated
unknown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the host provides an exact signal, fine.&lt;/p&gt;

&lt;p&gt;If it doesn't, Elephant does not manufacture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLAUDE QUOTA: 97.3%
CRITICAL MEMORY MODE ACTIVATED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because that would be theatre.&lt;/p&gt;

&lt;p&gt;The system is designed around the assumption that the agent may disappear unexpectedly.&lt;/p&gt;

&lt;p&gt;Continuous journaling makes exact quota prediction much less important.&lt;/p&gt;

&lt;p&gt;If the memory is already saved, you don't need to predict the precise second the model dies.&lt;/p&gt;

&lt;p&gt;Seatbelts do not predict crashes either.&lt;/p&gt;

&lt;p&gt;This has not prevented their adoption.&lt;/p&gt;




&lt;h1&gt;
  
  
  Local-first because the context is not harmless
&lt;/h1&gt;

&lt;p&gt;A coding-agent conversation may contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proprietary code;&lt;/li&gt;
&lt;li&gt;internal architecture;&lt;/li&gt;
&lt;li&gt;environment details;&lt;/li&gt;
&lt;li&gt;file paths;&lt;/li&gt;
&lt;li&gt;debugging output;&lt;/li&gt;
&lt;li&gt;credentials accidentally pasted into a terminal;&lt;/li&gt;
&lt;li&gt;the increasingly desperate messages you send after the fourth failing test.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sending all of that to another memory SaaS by default felt unnecessary.&lt;/p&gt;

&lt;p&gt;So Elephant's own journal stays local.&lt;/p&gt;

&lt;p&gt;No Elephant account.&lt;/p&gt;

&lt;p&gt;No Elephant cloud.&lt;/p&gt;

&lt;p&gt;No analytics pipeline.&lt;/p&gt;

&lt;p&gt;No telemetry.&lt;/p&gt;

&lt;p&gt;No mysterious checkbox saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Help us improve Elephant by uploading the private repository that pays your salary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The database lives on your machine.&lt;/p&gt;

&lt;p&gt;Sensitive keys and common credential formats are redacted before persistence.&lt;/p&gt;

&lt;p&gt;This is defense-in-depth, not magic.&lt;/p&gt;

&lt;p&gt;If somebody has unrestricted access to your laptop, Elephant is not going to defeat the concept of computer security.&lt;/p&gt;

&lt;p&gt;The elephant remembers.&lt;/p&gt;

&lt;p&gt;It is not Batman.&lt;/p&gt;




&lt;h1&gt;
  
  
  Native continuity vs portable recovery
&lt;/h1&gt;

&lt;p&gt;There is another boring engineering reality.&lt;/p&gt;

&lt;p&gt;Not every coding harness exposes enough lifecycle information for automatic capture.&lt;/p&gt;

&lt;p&gt;It would have been much easier to put twenty logos on the README and write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Supports everything.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open-source README engineering is significantly easier than software engineering.&lt;/p&gt;

&lt;p&gt;Instead, Elephant distinguishes levels of support.&lt;/p&gt;

&lt;p&gt;Some hosts can provide native lifecycle capture and automatic recovery.&lt;/p&gt;

&lt;p&gt;Others can participate through recovery skills, MCP surfaces, rules files, or repository-level instructions.&lt;/p&gt;

&lt;p&gt;The current project includes integrations or recovery surfaces across tools including Claude Code, Codex, GitHub Copilot CLI, Gemini, Pi, Hermes, OpenCode, Cursor, Windsurf, Cline, Kiro and other compatible hosts.&lt;/p&gt;

&lt;p&gt;The exact capability differs by harness.&lt;/p&gt;

&lt;p&gt;Which is less impressive than saying “universal.”&lt;/p&gt;

&lt;p&gt;But more useful.&lt;/p&gt;

&lt;p&gt;Software eventually has to interact with reality.&lt;/p&gt;

&lt;p&gt;Reality has terrible developer experience.&lt;/p&gt;




&lt;h1&gt;
  
  
  Installing it
&lt;/h1&gt;

&lt;p&gt;You install Elephant in the harnesses between which you want continuity.&lt;/p&gt;

&lt;p&gt;For example, in Claude Code the repository currently documents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add vishesh9131/elephant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin install elephant@elephant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Codex:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex plugin marketplace add vishesh9131/elephant
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then install Elephant from the marketplace through &lt;code&gt;/plugins&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There are native/recovery setup paths for the other supported hosts as well; the repository keeps the current commands and platform matrix.&lt;/p&gt;

&lt;p&gt;Python 3.11+ is required for the local kernel and lifecycle hooks.&lt;/p&gt;

&lt;p&gt;Once installed, the point is that Elephant should mostly disappear.&lt;/p&gt;

&lt;p&gt;I did not want another command that developers must remember to run before the thing designed to remember things can remember things.&lt;/p&gt;

&lt;p&gt;That would be conceptually embarrassing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Explicit resume still exists
&lt;/h1&gt;

&lt;p&gt;Sometimes you actually want to ask for the previous session.&lt;/p&gt;

&lt;p&gt;Elephant supports explicit recovery too.&lt;/p&gt;

&lt;p&gt;Depending on the host, that may be something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/elephant:resume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;or simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resume my previous session
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact surface depends on the coding harness.&lt;/p&gt;

&lt;p&gt;Again, because the coding harnesses are actually different.&lt;/p&gt;

&lt;p&gt;I checked.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why build this now?
&lt;/h1&gt;

&lt;p&gt;AI coding has created an interesting situation.&lt;/p&gt;

&lt;p&gt;The models are becoming increasingly capable of long, autonomous technical work.&lt;/p&gt;

&lt;p&gt;Which makes losing their context more annoying, not less.&lt;/p&gt;

&lt;p&gt;If an agent spends thirty seconds answering a question and forgets afterward, who cares?&lt;/p&gt;

&lt;p&gt;If an agent spends forty-five minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exploring the repository,&lt;/li&gt;
&lt;li&gt;forming hypotheses,&lt;/li&gt;
&lt;li&gt;changing six files,&lt;/li&gt;
&lt;li&gt;running tests,&lt;/li&gt;
&lt;li&gt;rejecting two approaches,&lt;/li&gt;
&lt;li&gt;discovering an undocumented invariant,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then its working context has value.&lt;/p&gt;

&lt;p&gt;The model didn't merely produce text.&lt;/p&gt;

&lt;p&gt;It accumulated &lt;strong&gt;state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And as developers increasingly move between different coding agents, that state needs to become portable.&lt;/p&gt;

&lt;p&gt;There is already visible developer demand around shared context and handoffs between Claude, Codex, Gemini and similar tools. Developers are building utilities for context packaging, shared memory and multi-agent workflows because switching agents otherwise means repeatedly reconstructing project state. The problem is becoming a category rather than an isolated annoyance.&lt;/p&gt;

&lt;p&gt;The interesting question is therefore no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which coding agent should own my project?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It might be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why should any coding agent own the memory?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Models should probably be replaceable
&lt;/h1&gt;

&lt;p&gt;We currently treat AI coding tools somewhat like IDEs.&lt;/p&gt;

&lt;p&gt;Pick one.&lt;/p&gt;

&lt;p&gt;Configure it.&lt;/p&gt;

&lt;p&gt;Develop habits around it.&lt;/p&gt;

&lt;p&gt;Defend it online for reasons that become increasingly personal.&lt;/p&gt;

&lt;p&gt;But models are moving quickly.&lt;/p&gt;

&lt;p&gt;One model may be better at debugging.&lt;/p&gt;

&lt;p&gt;Another may be better at planning.&lt;/p&gt;

&lt;p&gt;Another may have a larger context window.&lt;/p&gt;

&lt;p&gt;One may have available quota.&lt;/p&gt;

&lt;p&gt;One may simply not be down today.&lt;/p&gt;

&lt;p&gt;So perhaps the model should be a replaceable worker.&lt;/p&gt;

&lt;p&gt;The project state should survive the worker.&lt;/p&gt;

&lt;p&gt;That means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project
  +
working state
  +
history
  +
Git evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;should not belong exclusively to Claude.&lt;/p&gt;

&lt;p&gt;Or Codex.&lt;/p&gt;

&lt;p&gt;Or Gemini.&lt;/p&gt;

&lt;p&gt;The model is executing the work.&lt;/p&gt;

&lt;p&gt;The memory belongs to the project.&lt;/p&gt;

&lt;p&gt;That is the larger idea behind Elephant.&lt;/p&gt;




&lt;h1&gt;
  
  
  Is this “long-term memory for AI”?
&lt;/h1&gt;

&lt;p&gt;Kind of.&lt;/p&gt;

&lt;p&gt;But that phrase has become sufficiently broad that it can now mean almost anything involving a database.&lt;/p&gt;

&lt;p&gt;Elephant is intentionally narrower.&lt;/p&gt;

&lt;p&gt;It is not trying to remember your childhood.&lt;/p&gt;

&lt;p&gt;It does not need to know your favourite programming language from six months ago.&lt;/p&gt;

&lt;p&gt;It does not construct a psychological profile because you used &lt;code&gt;var&lt;/code&gt; once.&lt;/p&gt;

&lt;p&gt;Its immediate job is much more boring:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allow another coding agent to continue the work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That constraint is useful.&lt;/p&gt;

&lt;p&gt;Because “memory” sounds like an AI research problem.&lt;/p&gt;

&lt;p&gt;“Handoff” sounds like an engineering problem.&lt;/p&gt;

&lt;p&gt;Engineering problems have tests.&lt;/p&gt;




&lt;h1&gt;
  
  
  So I added tests
&lt;/h1&gt;

&lt;p&gt;Elephant's conformance flow is basically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;capture
   ↓
checkpoint
   ↓
switch harness
   ↓
recover
   ↓
verify Git state
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project tests journaling, redaction, recovery, MCP behaviour, manifests and cross-harness continuation.&lt;/p&gt;

&lt;p&gt;Because the worst possible outcome for a memory tool is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Elephant:
I remember everything.

Developer:
Great. What were we doing?

Elephant:
Something with authentication.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point we have reinvented my actual memory.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why call it Elephant?
&lt;/h1&gt;

&lt;p&gt;Because elephants supposedly never forget.&lt;/p&gt;

&lt;p&gt;This is convenient branding.&lt;/p&gt;

&lt;p&gt;The alternative name was probably something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-Harness Context Persistence Orchestration Kernel.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which sounds like a project whose documentation begins with Kubernetes.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;Elephant.&lt;/p&gt;




&lt;h1&gt;
  
  
  The slightly uncomfortable conclusion
&lt;/h1&gt;

&lt;p&gt;We spent years trying to make AI coding agents more autonomous.&lt;/p&gt;

&lt;p&gt;Now they can inspect repositories.&lt;/p&gt;

&lt;p&gt;Run commands.&lt;/p&gt;

&lt;p&gt;Edit files.&lt;/p&gt;

&lt;p&gt;Write tests.&lt;/p&gt;

&lt;p&gt;Debug failures.&lt;/p&gt;

&lt;p&gt;Reason across large codebases.&lt;/p&gt;

&lt;p&gt;And one of the remaining workflow problems is remarkably human:&lt;/p&gt;

&lt;p&gt;Shift change.&lt;/p&gt;

&lt;p&gt;One worker leaves.&lt;/p&gt;

&lt;p&gt;Another worker arrives.&lt;/p&gt;

&lt;p&gt;Nobody wrote down what happened.&lt;/p&gt;

&lt;p&gt;Except now the workers are artificial intelligences with billion-parameter neural networks and the handover process is still:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Okay bro, basically…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That seemed fixable.&lt;/p&gt;

&lt;p&gt;So I built Elephant.&lt;/p&gt;

&lt;p&gt;The model can forget.&lt;/p&gt;

&lt;p&gt;The project shouldn't have to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vishesh9131/elephant?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Check out Elephant on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you use multiple coding agents, try killing one in the middle of something interesting.&lt;/p&gt;

&lt;p&gt;For once, that is an installation test.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
