Theo’s Case Against Automatic Coding-Agent Memory

After examining Claude Code memories on his machines, Theo explains his preference for maintained project context, architecture and automated checks.

MaMarioGuestArArminGuest
Channel
Theo - t3․gg
Published
Aug 25, 2026
Video
39:28
Read
8 min
Slides
9
Original
English
Open on YouTube
Scroll to read and the video shrinks to the bottom-right corner. Captions follow your reading language.
Reading languageAvailable in 2 languages
You're reading the original English.
SUMMARY

In 30 seconds

Theo - t3.gg reacts to a discussion by Mario and Armin about coding-agent memory and tools, then audits memories from his own T3 Code work. He argues for reducing stale context and preventing recurring mistakes through architecture, tests and purposeful AGENTS.md instructions; the audit is a local example rather than a general study.

  1. 1Code changes; memories can driftMario argues that a separate memory system adds another source to maintain. Theo illustrates how stale comments and plans can mislead.
  2. 2A local memory auditThe agent reports 19 readers among roughly 355 T3 Code sessions and 26 of 45 memories never read after creation. The result describes one machine and method.
  3. 3Prevent recurring failuresTheo follows Lauren’s hierarchy from architecture and tests to rules and human review.
  4. 4A concrete CI exampleT3 Code replays sample threads and checks WebSocket transfer size to catch bandwidth regressions.
  5. 5Explain the productTheo’s AGENTS.md records project goals and cross-surface expectations so agents can make decisions in context.

Takeaways

  1. Automatically saved project notes can become stale, duplicate instructions or describe temporary state.
  2. Theo’s reported memory-read figures come from a single local transcript audit and do not establish a universal result.
  3. Code, tests and maintained project documentation can provide context without duplicating every past conversation.
  4. Architecture and automated checks can prevent or detect recurring failures before adding more instructions.
  5. Project instructions can explain product goals, terminology and cross-platform expectations, not just lists of prohibitions.
  6. Memory may be useful in conversational contexts where relationships are less explicit than in a repository.
FULL TEXT

Read the edited text by chapter

Transcript only
01

Why coding memory worries Theo

Theo introduces a discussion about code as the source of truth. He worries that separate automatic memories can drift.

A coding agent needs to understand the repository, where things live and how work gets done. Many systems try to save this context automatically for future sessions. I am skeptical that a separate memory store is the right place for evolving facts about a codebase.

I start with a conversation between Mario, creator of Pi, and Armin, creator of Flask. Their discussion of memory and minimal tools prompted me to inspect my own Claude Code setup and explain what I prefer to put in project instructions.

Mario argues that code is the ground truth and changes over time. A separate memory system creates another place to maintain. I agree that even ordinary comments can become harmful when the code changes and the comment keeps telling readers or agents the old story.

The more copies of knowledge you maintain, the easier it is for them to diverge. Old plans and Markdown files can stay in the repository long after their assumptions have expired, and that stale context can steer an agent in the wrong direction.

Mario suggests that models can infer style from nearby code, while a short directory map can help them navigate. He is skeptical of elaborate retrieval systems without evaluations showing they improve output. That is his position, not a controlled test of every retrieval approach.

I compare this with the evolution of coding tools such as Cursor. Earlier tools invested heavily in gathering context for models; newer coding agents can use shell and file tools to seek out relevant code themselves. I favor giving them useful tools over assuming a complex index is necessary.

02

Logs, shell tools and context

The clip discusses searchable logs and a Sentry skill. Theo distinguishes conversational memory from coding context.

Mario describes a Slack bot that searches an append-only log of prompts and responses using jq. Instead of maintaining a separate summary, the bot can look up the underlying record. That example also shows that conversational history and a changing repository are different problems.

I think memory can be more useful in general chat than in code. A personal question may relate to an earlier, apparently unrelated detail, whereas code often offers explicit paths and references to investigate. Still, personal context can also bias an answer toward irrelevant past details.

The Pi discussion turns to small tools and shell composition. Armin describes building a Sentry skill that authenticates as he prefers, downloads results to JSON and exposes only a small sample to the model, leaving it able to inspect the rest when needed.

I agree with the value of keeping tool output manageable, but I am less convinced that every integration needs a new skill. Strong models can often use ordinary tools and decide what to read. The right approach should be evaluated in the workflow, not assumed from the label.

03

Auditing stored memories

Theo examines memories across projects and asks an agent to assess their usefulness. The resulting numbers describe his local setup.

I ask Claude Code what it has stored about T3 Code. On one machine it reports a single memory about a feature spec that I am not even planning to ship. That makes me wonder what other temporary details have been saved elsewhere.

Inspecting one stored memory
SLIDE 1 / 9Inspecting one stored memoryTheo asks an agent what it remembers about T3 Code and sees a feature specification.

On another machine, the inventory covers multiple project directories and includes notes about configuration experiments, benchmarks, plans and projects. Some information might have been useful at the time, but it can become misleading if the state has since changed.

The memory inventory
SLIDE 2 / 9The memory inventoryThe agent reports 45 memories for the main clone as part of a broader inventory.

The main T3 Code clone has 45 memory files in the agent’s inventory. They include onboarding and design work. I ask the agent which entries still earn their keep, because my concern is not merely the number but whether old notes remain accurate and relevant.

The agent’s assessment of memory decay
SLIDE 3 / 9The agent’s assessment of memory decayThe assessment groups duplicate, expired and potentially stale entries; it is specific to Theo’s files.

The agent estimates that roughly a third of the 45 files are still useful. It groups others as duplicating AGENTS.md, describing shipped features, or recording point-in-time conditions that could have changed. This is an agent-generated assessment of my files, not an independent study.

I inspect examples: an outdated CLI issue, old plans and notes from probing an integration. Some entries record details from a specific investigation without making clear whether they remain true. One worktree warning may still be useful, which illustrates that not every saved detail is equally bad.

Other memories describe how T3 Connect worked during a particular development effort and the possibility of state conflicts. I can reconstruct why the agent wrote them, but I am not convinced they belong in a persistent store that may influence later work.

I decide to have my own machines archive the existing memories and disable the feature. That is my choice for my workflow; readers should inspect their own situation before changing or removing information they may need.

Reported local memory usage
SLIDE 4 / 9Reported local memory usageThe transcript audit reports reads and writes in a local sample, rather than a general experiment.

The agent’s transcript audit reports about 355 T3 Code sessions on that machine: 19 opened an individual memory file, while roughly 80 wrote or edited one. It also says 26 of 45 memories were never read after creation. These counts describe that local sample and method; they do not establish the value of memory for all users.

04

Preventing mistakes at the right layer

Theo distinguishes avoiding errors from communicating direction. He favors architecture and tests before more rules.

What do I want instead? Two related but distinct outcomes: fewer avoidable errors, and an agent that understands my direction without requiring every detail in the prompt. I do not believe indiscriminately saving more memories reliably supplies both.

Adding a “do not do this again” rule after every mistake can help, but it is worth stepping back. The real problem may be unclear communication, an unintuitive architecture or a mismatch in how the team and the agent understand the product.

I prefer instructions that communicate how I want the agent to think and what the team values. When the agent understands the direction, I find that many smaller errors become less frequent. That is an observation from my own workflow, not a guarantee.

Lauren proposes an order for preventing repeated mistakes: eliminate the failure through architecture or data structures; then use a lint rule or test; then consider a skill or rule; and finally rely on human review. I like this hierarchy as a way to ask which layer can prevent the issue.

An order for preventing recurring errors
SLIDE 5 / 9An order for preventing recurring errorsLauren’s post prioritizes architecture, automated checks, skills or rules, then human review.

For example, I value tRPC and Convex because shared types and architecture can remove some classes of frontend–backend mismatch. Making a codebase easier for human contributors can also make it easier for agents to navigate and change safely.

05

Catching bandwidth regressions

A T3 Code CI check measures transfer size using replayed sample threads. Theo explains its thresholds and purpose.

If architecture alone cannot prevent a regression, make it detectable in CI. T3 Code had a concrete performance problem: loading threads over WebSockets was transferring tens of megabytes, which was particularly painful on weak mobile or airplane connections.

I reduced the transfer volume and built a local replay suite using large sample threads, but regressions appeared again within days. So I added CI measurements for replayed Codex and Claude threads and a PR comment that shows the impact of a change.

The thread-transfer CI report
SLIDE 6 / 9The thread-transfer CI reportThe PR check compares measured transfer sizes against enforced ceilings.

After the optimization, the examples were consistently under 100 KB, with most under 10 KB. I set a ceiling roughly 30% above the optimized baseline; crossing it fails the check. I have seen this catch real regressions and give the agent feedback before it reports completion.

My preference is to exhaust architectural and automated-test options before introducing another skill or rule. A skill can be useful for a process that cannot easily be expressed in the codebase, such as exposing a development server remotely. It is a fallback, not a universal substitute for design.

06

Shared architecture and human values

Theo considers cross-platform drift and reacts to an Uncle Bob excerpt. He favors communicating values as well as constraints.

Human review remains another layer when automated approaches are insufficient. I apply the same thinking to a possible SwiftUI rewrite: the existing web, Electron and React Native surfaces share TypeScript data-loading code, while a separate implementation risks drifting.

A SwiftUI app has already regressed in my experience because that shared relationship is less direct. We have held back a version I otherwise like because the architectural tradeoff could allow failures that the shared implementation currently avoids.

Theo plays an excerpt in which Uncle Bob argues that human values matter for an agent, even if mechanically imposing a human work discipline may not. I like that framing: communicate the outcomes and standards we care about, then consider how the agent can achieve them.

07

What goes in AGENTS.md

The project file describes the product, principles, glossary and practical workflow. Theo closes with his approach to durable context.

T3 Code’s project instructions
SLIDE 7 / 9T3 Code’s project instructionsThe file begins with the product architecture and guiding principles.

My T3 Code AGENTS.md begins with what the product is and how its server wraps provider CLIs for web, desktop and mobile clients. I want an agent to understand the product, not merely the file it is editing, so its suggestions fit the direction of the project.

The document also names principles: keep the project open, protect performance, support remote use and account for all surfaces. I have seen reminders about performance reduce regressions, while CI catches others. That is my experience with this project.

Performance and remote access
SLIDE 8 / 9Performance and remote accessThe instructions record product priorities and cross-surface requirements.

Remote readiness matters because a change can work in a local desktop test but fail over the web or on a phone. Naming all the surfaces gives contributors and agents a reason to check the behavior beyond the environment immediately in front of them.

I include a personal note, a shared glossary and warnings about actions that can interrupt the server being used for development. The glossary helps people and agents use the same words, while concrete cautions address failures I actually encountered.

A shared glossary
SLIDE 9 / 9A shared glossaryThe document defines terms used by maintainers, users and agents.

Other sections cover development servers, representative test data, verification, PRs and code location. A taste section records preferences about where complexity belongs, avoiding unnecessary types and keeping comments tied to the code they describe.

The goal is for the agent to understand your intentions well enough to suggest related work or push back when appropriate. In my workflow, carefully written project context has helped more than the automatic memories I inspected.

Every new thread begins without the prior conversation, so durable context needs to be available somehow. My recommendation is to put the important goals and current project facts where they can be maintained, rather than assume automatically saved notes will stay useful. Experiment and see what works for your team.

More from this channel

5 slides36:07EN
Theo - t3․gg· Oct 27, 2026Theo on Token Costs, Coding Agents, and the Price of AI CapabilityTheo Browne · Ping LabsA viral estimate of Lauren's AI spending prompts a closer look at cache pricing, benchmarks, and the changing work of coding agents.AI cost & performanceCoding agentsInference+1
5 slides30:37EN
Theo - t3․gg· Oct 26, 2026Theo’s Three Skills for Reviewing and Shipping with Coding AgentsTheo Browne · Ping LabsHow sol-loop, full-send and full-stop encode review, verification and different levels of merge authority.Agent skillsCoding agentsCode review & verification+2
2 slides0:43EN
Theo - t3․gg· Oct 23, 2026Theo Distinguishes Security Vulnerabilities from Active AttacksTheo Browne · Ping LabsA short explanation of why disclosed software flaws and reported attacks are different kinds of security news.CybersecuritySoftware engineering
6 slides29:22EN
Theo - t3․gg· Oct 22, 2026Theo on Security Vulnerabilities, Stolen API Keys and AITheo Browne · Ping LabsA look at the gap between vulnerability disclosure and patching, and a speculative account of why stolen inference keys may be valuable.CybersecurityAI securitySoftware engineering+1
4 slides31:13EN
Theo - t3․gg· Oct 20, 2026Theo on Why Smarter Models Help More Than DevelopersTheo Browne · Ping LabsFrom game modifications to compiler experiments, Theo revisits his assumptions about who benefits from more capable AI.Coding agentsDeveloper productivityHuman-AI Collaboration+1
4 slides31:47EN
Theo - t3․gg· Oct 18, 2026Theo on Asking Agents for Outcomes and Building the Tools They NeedTheo Browne · Ping LabsA tool-call report, a troubleshooting playbook and connected data show how prompting can reshape product engineering.Prompting & in-context learningCoding agentsAgent engineering+2