<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Mark Hayden — Thoughts</title><description>Dreaming, tinkering, and relentlessly curious. I push ideas until they work or fall apart. This is the paper trail.</description><link>https://markhayden.dev/</link><language>en-us</language><atom:link href="https://markhayden.dev/feed.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Wed, 22 Apr 2026 12:00:00 GMT</lastBuildDate><managingEditor>hi@markhayden.me (Mark Hayden)</managingEditor><webMaster>hi@markhayden.me (Mark Hayden)</webMaster><copyright>© 2026 Mark Hayden</copyright><item><title>Congrats on Your Agent Memory System. Here&apos;s Where It Falls Apart.</title><link>https://markhayden.dev/thoughts/agent-memory-system-where-it-falls-apart/</link><guid isPermaLink="true">https://markhayden.dev/thoughts/agent-memory-system-where-it-falls-apart/</guid><description>Across seven public agent memory systems, the same five decisions and five cracks keep recurring. Those cracks are where costly failures tend to live.</description><pubDate>Wed, 22 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I looked at seven teams that shipped memory systems for agents. A research lab, a hyperscaler, a YC startup, an open-source project, a CLI tool, a framework consultancy, and a managed memory platform. No shared playbook between them.&lt;/p&gt;
&lt;p&gt;Across those seven systems, the same five decisions kept showing up. The same five cracks did too.&lt;/p&gt;
&lt;p&gt;Convergence isn&amp;#39;t proof anyone is right. Whole fields can agree and be wrong together. But when seven groups with little in common keep arriving at the same architecture, the overlap tells you something real about the shape of the problem. The disagreements tell you where the work isn&amp;#39;t finished. The cracks tell you where it breaks in production.&lt;/p&gt;
&lt;p&gt;This post explores all three.&lt;/p&gt;
&lt;p&gt;The cast, with links for anyone who wants to go read the source:&lt;/p&gt;
&lt;p&gt;What follows is my synthesis from these seven public systems, not a claim that the whole field has settled on one design.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.langchain.com/oss/python/langgraph/memory&quot;&gt;LangGraph&lt;/a&gt;.&lt;/strong&gt; Thread-scoped short-term memory (one conversation, one thread) paired with namespace-scoped long-term memory (one namespace per user or project).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://openai.github.io/openai-agents-python/sessions/&quot;&gt;OpenAI&amp;#39;s Agents SDK&lt;/a&gt;.&lt;/strong&gt; By default, sessions prepend stored conversation history before each run, with long-term memory left to whatever store you pair with it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://code.claude.com/docs/en/memory&quot;&gt;Claude Code&lt;/a&gt;.&lt;/strong&gt; &lt;code&gt;CLAUDE.md&lt;/code&gt; files and auto-memory, treating instructional memory (how to work, not just what you said) as first-class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://microsoft.github.io/autogen/dev/user-guide/agentchat-user-guide/memory.html&quot;&gt;Microsoft AutoGen&lt;/a&gt;.&lt;/strong&gt; Memory as a protocol (&lt;code&gt;add&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;update_context&lt;/code&gt;, &lt;code&gt;clear&lt;/code&gt;, &lt;code&gt;close&lt;/code&gt;) with an explicit context-update step that runs right before each model call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.mem0.ai/overview&quot;&gt;Mem0&lt;/a&gt;.&lt;/strong&gt; Managed memory (hosted service you call into) with extraction, conflict resolution, and a dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.letta.com/guides/core-concepts/stateful-agents&quot;&gt;Letta&lt;/a&gt;.&lt;/strong&gt; Composable memory blocks (small, named chunks of memory) attachable and editable at runtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.cloud.google.com/agent-builder/agent-engine/memory-bank/overview&quot;&gt;Google Vertex AI Memory Bank&lt;/a&gt;.&lt;/strong&gt; Managed long-term memory with revisions enabled by default, TTL controls, and IAM conditions (Google&amp;#39;s access-control system) layered over scopes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The five decisions&lt;/h2&gt;
&lt;h3&gt;1. Session state and durable memory are never the same system&lt;/h3&gt;
&lt;p&gt;Cleanest signal in the set. Across the seven systems I reviewed, &amp;quot;what was said in this conversation&amp;quot; and &amp;quot;what should outlive this conversation&amp;quot; are handled as separate concerns. They look similar on the surface. The access patterns, lifetimes, and failure modes aren&amp;#39;t.&lt;/p&gt;
&lt;p&gt;LangGraph has thread-scoped checkpoints for one and namespace-scoped stores for the other. OpenAI&amp;#39;s Agents SDK auto-prepends and auto-appends turns but explicitly leaves durable memory to whatever you pair with it. Mem0 splits conversation, session, user, and org. Letta pins memory blocks in the prompt and persists messages separately, retrievable but not auto-replayed. Vertex AI Memory Bank treats session history and long-term memory as distinct resources with different lifecycles. Claude Code starts with a fresh context window and handles continuity through &lt;code&gt;CLAUDE.md&lt;/code&gt; and auto-memory instead of replaying transcripts.&lt;/p&gt;
&lt;p&gt;The underlying point is the same. Compaction is session hygiene. Promotion is a separate decision with separate policy. Conflate them and you break both.&lt;/p&gt;
&lt;h3&gt;2. Retrieval gets its own phase, right before the model call&lt;/h3&gt;
&lt;p&gt;Across these seven systems, retrieval shows up as an explicit assembly or context-update step immediately before execution. Not as a side effect of some storage layer. A governable step.&lt;/p&gt;
&lt;p&gt;AutoGen names this most cleanly. Its memory protocol has a dedicated &lt;code&gt;update_context&lt;/code&gt; operation whose only job is mutating the active context before the model runs. OpenAI Agents does it during input assembly. Letta injects attached blocks into the system prompt at run time. LangGraph reads state at every step boundary. Mem0&amp;#39;s standard flow is &lt;code&gt;query → assemble → prompt&lt;/code&gt; on each call.&lt;/p&gt;
&lt;p&gt;This matters because governable retrieval is where all the policy actually hangs. Scope filters, staleness checks, confidence thresholds, explanation payloads. If retrieval is hidden inside the model call, none of that is possible. If it&amp;#39;s a step you own, it&amp;#39;s a step you can instrument.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Illustrative pseudocode based on AutoGen&amp;#39;s Memory protocol.
# `update_context` is the hook where memory mutates context before the model runs.
class MyMemory(Memory):
    async def update_context(self, ctx: ChatContext) -&amp;gt; UpdateContextResult:
        hits = await self.query(ctx.last_user_message())
        ctx.add_system_message(format_memories(hits))
        return UpdateContextResult(memories=hits)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Promotion needs policy. No blind append.&lt;/h3&gt;
&lt;p&gt;The weakest systems dump raw transcripts into durable memory and let retrieval sort it out later. The strongest ones treat every promotion from session to durable as an explicit pipeline with gates at each step.&lt;/p&gt;
&lt;p&gt;Mem0 runs an extract-resolve-store flow on &lt;code&gt;add&lt;/code&gt;: infer structured memories, detect conflicts with existing entries, resolve with &amp;quot;latest truth wins,&amp;quot; then store. The inferred memory has different authority than the raw transcript it came from. Claude Code&amp;#39;s auto-memory watches for user corrections and repeated preferences, not every observation that goes by. Letta uses editable blocks rather than auto-promotion. Agents write blocks when something deserves it. Vertex AI Memory Bank runs extraction and consolidation as async background jobs, off the hot path.&lt;/p&gt;
&lt;p&gt;The shared insight, compressed. Raw experience is not memory. Memory is what survives a promotion policy.&lt;/p&gt;
&lt;h3&gt;4. Scope is a first-class retrieval and safety control&lt;/h3&gt;
&lt;p&gt;Across the seven systems, scope is treated as part of the query shape or attachment model, not a filter slapped on after the fact.&lt;/p&gt;
&lt;p&gt;Mem0 is built around entity-scoped memory via identifiers like &lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;agent_id&lt;/code&gt;, &lt;code&gt;app_id&lt;/code&gt;, and &lt;code&gt;run_id&lt;/code&gt;. LangGraph&amp;#39;s stores are namespace-scoped, typically composite (user plus project). Letta&amp;#39;s attachable blocks mean an agent&amp;#39;s effective memory is the union of whatever blocks are currently attached. Vertex AI Memory Bank enforces identity-scoped isolation and supports IAM conditions that can express &amp;quot;this principal can read memories where &lt;code&gt;scope.project = X&lt;/code&gt;.&amp;quot; Claude Code loads managed, project, user, and local instruction sources with more specific guidance typically having the last word in practice.&lt;/p&gt;
&lt;p&gt;The convergent rule in the systems above. Scope must fail closed. If the scope can&amp;#39;t be resolved, refuse. Don&amp;#39;t widen. The reason isn&amp;#39;t just relevance. It&amp;#39;s privacy. Silent scope-widening is how memory leaks across projects, across users, across agents. &amp;quot;Just one more fallback&amp;quot; becomes &amp;quot;why did the agent just tell me about my coworker&amp;#39;s project.&amp;quot;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Fail-closed scope: no resolvable scope = refuse, never silently widen
if not user_id:
    raise ScopeError(&amp;quot;user_id required; refusing rather than widening to global&amp;quot;)

results = store.search((&amp;quot;memories&amp;quot;, user_id), query=q)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5. Pinned memory beats retrieval for top-priority facts&lt;/h3&gt;
&lt;p&gt;Every system in this set that handles long-running agents ends up with a pinned lane. Memory that lives in the prompt unconditionally, not filtered through ranking.&lt;/p&gt;
&lt;p&gt;Claude Code loads &lt;code&gt;CLAUDE.md&lt;/code&gt; and auto-memory at session start. Not retrieved. Present. Letta&amp;#39;s &amp;quot;core&amp;quot; blocks are injected directly into the system prompt. Other memory is retrievable but not pinned. OpenAI Agents session items auto-prepend before each run, subject to history limits or compaction if you enable them. LangGraph reads state at step start unconditionally.&lt;/p&gt;
&lt;p&gt;Why retrieval is insufficient for the high-priority layer: retrieval is ranking, and ranking has variance. For preferences that must always apply and policies that must always fire, variance is the enemy. Pinning removes the variance by making the memory part of the prompt&amp;#39;s base instead of its results.&lt;/p&gt;
&lt;p&gt;The tradeoff is obvious. Pinned memory costs tokens every call. So these systems tend toward a small pinned layer and a larger retrieved layer. Which is &lt;a href=&quot;https://arxiv.org/abs/2310.08560&quot;&gt;MemGPT&amp;#39;s&lt;/a&gt; tier model again, just dressed differently.&lt;/p&gt;
&lt;h2&gt;Each team&amp;#39;s distinctive decision&lt;/h2&gt;
&lt;p&gt;What makes each system its own thing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangGraph.&lt;/strong&gt; Cleanest public split between short-term memory (per conversation) and long-term memory (per user or project). On top of that, an explicit taxonomy: semantic (facts), episodic (events), procedural (how-to).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI&amp;#39;s Agents SDK.&lt;/strong&gt; Continuity first. By default, sessions replay stored history into the next run, with optional history limits and compaction. Durable memory is left to whatever store you pair with it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code.&lt;/strong&gt; Instructional memory as first-class. &lt;code&gt;CLAUDE.md&lt;/code&gt; treats repo conventions and workflow rules as a memory class in their own right, separate from facts about the user.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft AutoGen.&lt;/strong&gt; Memory as a formal protocol. Five operations any memory implementation has to provide: &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;update_context&lt;/code&gt;, &lt;code&gt;clear&lt;/code&gt;, &lt;code&gt;close&lt;/code&gt;. The &lt;code&gt;update_context&lt;/code&gt; operation is the explicit phase where retrieval meets the prompt, called right before the model runs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mem0.&lt;/strong&gt; Managed memory as a product surface. One hosted service handles extraction (pulling memories out of conversation), conflict resolution (when two memories disagree), scoped search, and a dashboard. One flow instead of seven you assemble yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Letta.&lt;/strong&gt; Memory as composable objects. Blocks can be pinned in the prompt, attached to an agent, shared across agents, and edited at runtime by the agent itself. An agent can rewrite its own memory mid-task.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Vertex AI Memory Bank.&lt;/strong&gt; Memory with operational rigor. Revisions are enabled by default (and can be disabled), TTL controls how long memories or revisions persist, deleted memories have a limited recovery window, and IAM conditions support access rules like &amp;quot;this principal can only read memories where project = X&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where they actually disagree&lt;/h2&gt;
&lt;p&gt;Convergence gets the headlines. The interesting part is where the seven systems still don&amp;#39;t agree, and three disagreements have real weight. Each one is a choice that changes how the system behaves day to day, not just how it reads on a docs page.&lt;/p&gt;
&lt;h3&gt;Instruction memory vs. fact memory&lt;/h3&gt;
&lt;p&gt;Claude Code is built around &lt;em&gt;instructional&lt;/em&gt; memory. How to behave, repo conventions, workflow rules. Mem0 is built around &lt;em&gt;factual&lt;/em&gt; memory. The user likes X, the project decided Y. Letta spans both through blocks. Most other systems implicitly treat memory as facts and leave instructions to the system prompt.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;!-- CLAUDE.md: instructional memory, loaded into every session --&amp;gt;
Use pnpm, not npm.
Write tests with Vitest, not Jest.
Never use em dashes in copy.
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Illustrative pseudocode: factual memory, extracted from conversation and scoped to a user
m.add(&amp;quot;User prefers TypeScript over JavaScript&amp;quot;, user_id=&amp;quot;alice&amp;quot;)
m.add(&amp;quot;Project &amp;#39;Bakin&amp;#39; chose AntflyDB over LanceDB&amp;quot;, user_id=&amp;quot;alice&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This matters. Retrieval logic, promotion rules, and editability requirements are genuinely different between the two. A preference can be superseded. A workflow rule has to fire every turn. Systems that collapse them struggle in both directions. Instructions get forgotten in long tasks. Facts get rigidly reapplied when they shouldn&amp;#39;t.&lt;/p&gt;
&lt;h3&gt;Runtime-owned vs. store-owned governance&lt;/h3&gt;
&lt;p&gt;Where does lifecycle policy live.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Store-owned.&lt;/strong&gt; Mem0 and Vertex put promotion, supersession, TTL, and extraction inside the memory store. The agent calls &lt;code&gt;add&lt;/code&gt; and &lt;code&gt;search&lt;/code&gt; and the store handles the rest.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Illustrative pseudocode: the store decides what to extract, dedup, and expire
m.add(&amp;quot;User prefers concise responses&amp;quot;, user_id=&amp;quot;alice&amp;quot;)
results = m.search(&amp;quot;response style&amp;quot;, user_id=&amp;quot;alice&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Runtime-owned.&lt;/strong&gt; LangGraph and AutoGen put policy in the runtime. You decide when to write, what to extract, how to rerank.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Illustrative pseudocode: you own the extraction, the write, and the query shape
if should_remember(message):
    await store.aput(
        (&amp;quot;memories&amp;quot;, user_id),
        str(uuid4()),
        {&amp;quot;text&amp;quot;: extract(message), &amp;quot;kind&amp;quot;: &amp;quot;preference&amp;quot;},
    )

memories = await store.asearch((&amp;quot;memories&amp;quot;, user_id), query=current_context)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Hybrid.&lt;/strong&gt; Letta and Claude Code do both. Some lifecycle is agent-driven (agents editing their own blocks), some is infrastructural.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Illustrative pseudocode based on Letta&amp;#39;s current memory editing tools.
memory_replace(
    block_label=&amp;quot;persona&amp;quot;,
    old_text=&amp;quot;Generalist engineer.&amp;quot;,
    new_text=&amp;quot;Senior engineer. Prefers Go. Concise responses.&amp;quot;,
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Neither is wrong. Store-owned is easier to adopt, harder to customize. Runtime-owned is more flexible, more work per deployment. The choice has implications all the way up to who owns correction flows and provenance visibility.&lt;/p&gt;
&lt;h3&gt;User-facing visibility&lt;/h3&gt;
&lt;p&gt;Widest gap in the field.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://openai.com/index/memory-and-new-controls-for-chatgpt/&quot;&gt;ChatGPT&lt;/a&gt; has polished end-user memory controls. Inspect, delete, disable, temporary mode. Mem0&amp;#39;s OpenMemory UI markets browse, tag, and manage flows. Letta exposes blocks as inspectable objects. Vertex exposes revisions and IAM but is operator-facing, not user-facing. AutoGen, LangGraph, and the Agents SDK leave user-facing memory UX almost entirely to the application developer.&lt;/p&gt;
&lt;p&gt;This is one of the first things I wanted to get right when building &lt;a href=&quot;/projects/bakin&quot;&gt;Bakin&lt;/a&gt; for OpenClaw. An agent memory system is only useful if you can see what&amp;#39;s in it and edit it.&lt;/p&gt;
&lt;p&gt;The forcing function came from a rename. The project started as &amp;quot;beacon.&amp;quot; It got renamed to &amp;quot;bakin.&amp;quot; My main agent, Roscoe, could not let beacon go. Ran in loops. I tried &lt;code&gt;AGENTS.md&lt;/code&gt;. Skills files. Escalations in the system prompt. Same behavior every time.&lt;/p&gt;
&lt;p&gt;So I built a view over the memory store. Session, markdown, and durable tiers in one place, searchable and editable. First query: &amp;quot;beacon.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/bakin-memory-search.webp&quot; alt=&quot;Screenshot of the Bakin memory inspector filtered to durable tier, searching for &amp;quot;beacon&amp;quot; and showing dozens of matching entries across scout, pixel, patch, basil, and nemo agents&quot;&gt;&lt;/p&gt;
&lt;p&gt;Dozens of beacon references sitting in the durable store across scout, pixel, patch, basil, nemo. Auto-managed by &lt;code&gt;beacon doctor&lt;/code&gt;. Pinned, weighted, surfacing every turn. Prompt engineering was never going to outrank that. Once I could see it, the fix was thirty seconds.&lt;/p&gt;
&lt;p&gt;Infrastructure has advanced much faster than the interfaces. This one&amp;#39;s not close.&lt;/p&gt;
&lt;h2&gt;The five cracks everyone has&lt;/h2&gt;
&lt;p&gt;Across the seven systems, the same gaps show up repeatedly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scope and isolation.&lt;/strong&gt; Most systems have scopes. Fewer make scope resolution, fail-closed behavior, and cross-scope leakage inspection truly first-class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lifecycle and supersession.&lt;/strong&gt; Most systems can store a new fact. Fewer can cleanly model &amp;quot;this replaces that,&amp;quot; mark records stale, surface conflicts, and preserve visible revision history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provenance and &amp;quot;why recalled.&amp;quot;&lt;/strong&gt; Users and operators want to know where a memory came from and why it surfaced. Almost nobody exposes this as a queryable or visible object.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summary artifacts treated as canonical.&lt;/strong&gt; Compactions, reflections, and synthesized briefs often get reused as if they were primary sources, even when they have already dropped nuance or preserved the wrong branch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promotion without authority checks.&lt;/strong&gt; Hypotheses, drafts, tool paraphrases, and model inferences get promoted into durable memory without enough checks on truth status, source authority, or applicability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These aren&amp;#39;t nice-to-haves on someone&amp;#39;s backlog. They&amp;#39;re where many of the production bugs that matter actually live.&lt;/p&gt;
&lt;h2&gt;What breaks when the cracks open&lt;/h2&gt;
&lt;p&gt;Take each crack in turn and the recurring failure modes fall out immediately. The same shapes show up across systems, which is the strongest evidence the cracks are structural, not implementation details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scope crack, open.&lt;/strong&gt; Silent scope-widening pulls another user&amp;#39;s preference, another project&amp;#39;s decision, or another agent&amp;#39;s local note into the wrong session. The scope filter matched nothing, a fallback widened the search, something returned, and it was wrong. Nobody noticed until a cross-customer note surfaced. Or a &amp;quot;temporary&amp;quot; session still contributes to recall traces, flushes, or dream promotions, so an ephemeral conversation quietly changes future behavior. That one destroys user trust faster than any other failure in this category, because it breaks an explicit promise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lifecycle crack, open.&lt;/strong&gt; The user changes a standing preference and the old one still ranks highly, so the agent keeps writing in the old style. The project architecture shifted, but last quarter&amp;#39;s pinned decision brief is still in the retrieval set, and the agent implements reverted patterns. The source file changed and the memory didn&amp;#39;t, so the agent cites a stale quote as current truth. The user says &amp;quot;that&amp;#39;s wrong&amp;quot; and the agent adapts the current turn, but the underlying record stays untouched, so the same wrong fact resurfaces next week. That last one is what users mean when they say &amp;quot;I feel like I&amp;#39;m telling it the same thing over and over.&amp;quot; Same shape as the beacon-to-bakin story earlier. The rename landed in the prompt. The corrections landed in the current turn. The durable store was never touched, so &amp;quot;beacon&amp;quot; kept surfacing every run until I opened the memory view and cleaned it out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Provenance crack, open.&lt;/strong&gt; The extraction pipeline writes an inferred claim as a fact, and months later the system &amp;quot;remembers&amp;quot; something the user never said. A brainstorm-phase hypothesis ranks beside a user-confirmed preference and gets cited as settled knowledge. A tool result gets paraphrased into something stronger than the source supported. The memory is retrievable, but nobody can tell where it came from or whether to trust it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary crack, open.&lt;/strong&gt; A long session gets compacted after an earlier plan was rejected. The summary preserves the original plan and silently drops the reversal. Future turns revive the wrong branch. Recursive summary-of-summary cycles smooth away the hedged qualifiers until the brief reads cleaner than the evidence ever did. The same synthesized summary gets restated across enough turns that agents stop checking primary sources, and the summary becomes de facto canonical. This whole category is one mistake in different clothes. A derivative artifact treated as canonical.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Promotion crack, open.&lt;/strong&gt; A temporary working note appears often enough to get promoted, and a one-off debugging assumption becomes a durable rule. Semantic similarity ranks an older but textually similar note above the newer explicit decision record. A dreaming pipeline promotes a popular but misleading snippet because it scored high on frequency and nothing else checked its authority.&lt;/p&gt;
&lt;p&gt;The whole corpus of memory bugs compresses to one line.&lt;/p&gt;
&lt;p&gt;&amp;quot;Wrong thing&amp;quot; is provenance failures plus summary artifacts being treated as primary truth. &amp;quot;Wrong status&amp;quot; is lifecycle. &amp;quot;Wrong scope&amp;quot; is scope. &amp;quot;For too long&amp;quot; is what happens when correction, supersession, and expiry fail. Promotion without authority checks is how the wrong thing gets durable status in the first place. Those five cracks are the mechanisms behind the whole failure pattern.&lt;/p&gt;
&lt;h2&gt;What the cracks tell you to carry on every record&lt;/h2&gt;
&lt;p&gt;Read as design constraints, the cracks give you the minimum shape I&amp;#39;d want in any serious durable memory record.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;class&lt;/code&gt;, because a hypothesis should retrieve differently from a fact&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scope&lt;/code&gt;, because fail-closed is the only defense against silent cross-contamination&lt;/li&gt;
&lt;li&gt;&lt;code&gt;origin&lt;/code&gt;, because user-stated and model-inferred need different trust weights&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; of &lt;code&gt;active | stale | superseded | conflicted | archived&lt;/code&gt;, because &amp;quot;it&amp;#39;s still in the store&amp;quot; is not the same as &amp;quot;it&amp;#39;s still true&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;confidence&lt;/code&gt;, because not all memories deserve equal retrieval weight&lt;/li&gt;
&lt;li&gt;&lt;code&gt;freshness&lt;/code&gt; or &lt;code&gt;lastValidatedAt&lt;/code&gt;, because memories go stale even when correct&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sourceRef&lt;/code&gt; with source id, path, version, and quote span, because without provenance you cannot debug anything&lt;/li&gt;
&lt;li&gt;&lt;code&gt;supersedes&lt;/code&gt; and &lt;code&gt;supersededBy&lt;/code&gt;, because &amp;quot;this replaces that&amp;quot; is the most common operation you&amp;#39;ll want later&lt;/li&gt;
&lt;li&gt;&lt;code&gt;createdBy&lt;/code&gt; and &lt;code&gt;createdFrom&lt;/code&gt;, because knowing who wrote a memory is a prerequisite for deleting it correctly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Put them together and you get the minimum shape I&amp;#39;d want every serious durable memory record to carry.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;interface DurableMemory {
  id: string;
  class: &amp;quot;fact&amp;quot; | &amp;quot;hypothesis&amp;quot; | &amp;quot;instruction&amp;quot; | &amp;quot;preference&amp;quot;;
  scope: { userId: string; projectId?: string; agentId?: string };
  origin: &amp;quot;user-stated&amp;quot; | &amp;quot;model-inferred&amp;quot;;
  status: &amp;quot;active&amp;quot; | &amp;quot;stale&amp;quot; | &amp;quot;superseded&amp;quot; | &amp;quot;conflicted&amp;quot; | &amp;quot;archived&amp;quot;;
  confidence: number;
  lastValidatedAt: Date;
  sourceRef?: {
    docId: string;
    path: string;
    version: string;
    quote: string;
  };
  supersedes?: string;
  supersededBy?: string;
  createdBy: string;
  createdFrom: &amp;quot;extraction&amp;quot; | &amp;quot;user-input&amp;quot; | &amp;quot;tool-output&amp;quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;None of these are theoretical. Each maps to a specific failure above that omitting it causes.&lt;/p&gt;
&lt;h2&gt;Why this frame matters&lt;/h2&gt;
&lt;p&gt;The field agrees more than you&amp;#39;d think on the &lt;em&gt;shape&lt;/em&gt; of memory. Multi-tier. Typed. Scoped. Retrieval as an explicit step. Policy on promotion. Where it still splits: governance, the specifics of that promotion policy, and how much of the memory logic belongs in the runtime versus the store.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re evaluating or building one of these systems, the useful question isn&amp;#39;t &amp;quot;does it have memory.&amp;quot; Across the seven systems above, the same five decisions recur. The useful question is which of the five cracks is still open, because that&amp;#39;s where you&amp;#39;ll pay the failure tax.&lt;/p&gt;
</content:encoded><dc:creator>Mark Hayden</dc:creator><media:thumbnail url="https://markhayden.dev/images/social/auto/agent-memory-system-where-it-falls-apart.webp"/><media:content url="https://markhayden.dev/images/social/auto/agent-memory-system-where-it-falls-apart.webp" medium="image" type="image/webp"/><category>ai</category><category>memory</category><category>agents</category><category>architecture</category><author>hi@markhayden.me (Mark Hayden)</author></item><item><title>Work Ethic Is Still the Moat</title><link>https://markhayden.dev/thoughts/work-ethic-is-still-the-moat/</link><guid isPermaLink="true">https://markhayden.dev/thoughts/work-ethic-is-still-the-moat/</guid><description>AI raised the floor, but the advantage is not exclusive. Work ethic is still the moat, and the gap between talkers and shippers just got easier to see.</description><pubDate>Tue, 21 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We are in a strange moment.&lt;/p&gt;
&lt;p&gt;The tools are absurdly good. One capable person (key word being capable) can legitimately prototype a product in a weekend, ship something real in a week, automate work that used to take a team, and learn faster than ever.&lt;/p&gt;
&lt;p&gt;Last night I was playing with Seedance 2.0 (absolutely nuts if you have not tried it) and was able to generate five clips, stitch them together, add a few transitions, do a little slicing, dicing, and tweaking in DaVinci Resolve, and come out with a fifteen-second intro for Bakin I actually like. Not perfect. Not award-winning. But thirty minutes got me to an end result that used to take months of storyboarding, sketching, and modeling. That is not a stunt. That is the new baseline for a lot of what used to require a team.&lt;/p&gt;
&lt;p&gt;Some of what is happening right now is genuinely incredible. Some of it is complete bullshit.&lt;/p&gt;
&lt;p&gt;There is more smoke in the air than I can remember. Every single day there is a new &amp;quot;this changes everything&amp;quot; post, a new &amp;quot;we no longer need [insert profession]&amp;quot; take. The latest is Claude Design supposedly killing designers. Newsflash, it will not. Everything cannot change everything every day. The clickbait madness has to stop at some point, because it is drowning out the real signal. Fake builders, demo merchants, people confusing a clean UI with a real business, people confusing generated output with understanding, people acting like a prompt is the same thing as judgment, people trying to sell an &amp;quot;easy button&amp;quot; that somehow only they have access to.&lt;/p&gt;
&lt;p&gt;They do not. That is the point.&lt;/p&gt;
&lt;p&gt;The tools are here. They are broadly available. The advantage is real, but it is not exclusive, which means the old differentiator did not go away. If anything, it got more important.&lt;/p&gt;
&lt;p&gt;Work ethic is still the moat.&lt;/p&gt;
&lt;p&gt;Not work ethic in the performative sense. Not staying busy for optics. Not bragging about long nights for LinkedIn. Not burning yourself out so someone else can squeeze another quarter of output out of you. I mean the quieter thing. The harder thing to fake. The willingness to show up consistently, learn aggressively, do the boring reps, fix what is broken, stay with the problem when it stops being fun, and keep investing in yourself when nobody is forcing you to.&lt;/p&gt;
&lt;p&gt;That is still the thing.&lt;/p&gt;
&lt;h2&gt;Access is not skill&lt;/h2&gt;
&lt;p&gt;AI absolutely raises the floor. It makes it easier to start, easier to draft, easier to ship a rough first pass, easier to explore an unfamiliar domain, easier to automate tedious work, easier to become dangerous quickly. That is a real advantage, and pretending otherwise is lazy.&lt;/p&gt;
&lt;p&gt;But access to a tool is not the same as mastery of one, and easier access to leverage does not eliminate the value of effort. It just moves where the effort matters.&lt;/p&gt;
&lt;p&gt;The full potential of any of this only opens up through time, reps, and genuine curiosity. If the only way you learn these tools is YouTube explainers and Reddit threads, you are perpetually one cycle behind people who are actually using them to ship. At the pace the frontier is moving, one cycle behind is a lot. You have to invest. You have to play. You have to be weird with it, break things, push past the happy path, and stay interested long after the novelty has worn off. That is where taste comes from. That is where the real leverage compounds.&lt;/p&gt;
&lt;p&gt;When building gets cheaper, follow-through matters more. When answers get cheaper, judgment matters more. When everyone can generate, taste matters more. And when everyone can &lt;em&gt;look&lt;/em&gt; productive, the people who actually are productive start to separate themselves at a speed that feels uncomfortable to the people standing still.&lt;/p&gt;
&lt;p&gt;I have had a lot of conversations about that last part recently. The gap is widening in a way people can feel day to day. It changes how teams get staffed, how trust gets allocated, who gets handed the ambiguous problem, who gets handed the escalation. It is rewiring business dynamics in real time, and nobody is going to put out a press release about it. It is just happening.&lt;/p&gt;
&lt;p&gt;AI is not the moat. Access to tools is not the moat. Prompt fluency by itself is not the moat. The moat is being the kind of person who does not stop at the draft.&lt;/p&gt;
&lt;h2&gt;Reality still has edge cases&lt;/h2&gt;
&lt;p&gt;One reason the hype gets so exhausting is that it keeps pretending the hard part was typing. It usually was not. The hard part is knowing what should exist, knowing what not to build, handling the ugly edge cases, the hidden dependencies, the customer who phrases the problem badly, the second-order effect, the rewrite after the first version taught you something inconvenient. That is why a lot of AI output looks impressive right up until it meets reality.&lt;/p&gt;
&lt;p&gt;The research keeps echoing the same thing. In &lt;a href=&quot;https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/&quot;&gt;July 2025, METR ran a randomized controlled trial&lt;/a&gt; of 16 experienced open-source developers working on their own repos. Developers using early-2025 AI tools took 19% longer to complete issues, even though they expected the tools to make them significantly faster. &lt;a href=&quot;https://metr.org/blog/2026-02-24-uplift-update/&quot;&gt;A follow-up in February 2026&lt;/a&gt; showed the picture had flipped. The same cohort was now measurably faster with modern tooling. That is a tiny sample, so I would not treat either reading as gospel. But the directional point is hard to dismiss, and I do not think the two readings contradict each other. The tools genuinely got better, fast. The first study still pointed at something more interesting: a powerful tool does not automatically translate into better outcomes, even for smart and experienced people. The operator matters. The workflow matters. The standards matter. Those variables did not become less important when the tools got better. They became the thing that separates the 18% faster from the 18% slower.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers/&quot;&gt;Microsoft Research presented a related study at CHI 2025&lt;/a&gt;: a survey of 319 knowledge workers where higher confidence in GenAI was associated with less critical thinking, while higher self-confidence was associated with more. That feels like the whole game in one sentence. Strong people use the tool as leverage. Weak habits use the tool as an escape hatch.&lt;/p&gt;
&lt;p&gt;That is the gap.&lt;/p&gt;
&lt;h2&gt;What actually separates people&lt;/h2&gt;
&lt;p&gt;If you dig through the conversations around AI, startups, and engineering right now, the same themes keep surfacing from people who are actually building. In a recent r/SaaS thread, the strongest comments were not saying AI is fake. They were saying the moat moved from &amp;quot;can you build it?&amp;quot; to &amp;quot;do you understand the problem deeply enough to solve it better than the six identical competitors?&amp;quot; One commenter put it more directly than I could:&lt;/p&gt;
&lt;p&gt;That is exactly right, and it shows up everywhere once you start looking for it.&lt;/p&gt;
&lt;p&gt;Mario Zechner gave &lt;a href=&quot;https://www.youtube.com/watch?v=RjfbvDXpFls&quot;&gt;a talk at AI Engineer Europe&lt;/a&gt; that landed on almost the same point from a different angle. His closing lines stuck with me: think about what you are building and why. Learn to say no. Fewer features, but the right ones, polished. Friction builds understanding and taste. Be in the code. Non-critical code, go nuts. Critical code, review every line. None of that is anti-AI. It is the opposite. That is a builder who has actually shipped things telling you what the tool does and does not remove. It still does not remove taste, discipline, or the part of the job that requires you to be in the work.&lt;/p&gt;
&lt;p&gt;The future is probably not &amp;quot;manual purists beat everyone.&amp;quot; The future is much more likely that disciplined people with strong fundamentals use these tools to pull away even harder from people who are using them to avoid doing the work.&lt;/p&gt;
&lt;h2&gt;Effort, not optics&lt;/h2&gt;
&lt;p&gt;This part matters, because otherwise the whole argument gets flattened into hustle nonsense.&lt;/p&gt;
&lt;p&gt;Work ethic is not blindly over-identifying with your employer. It is not a moral obligation to make yourself useful to people who do not value you. It is not proof of virtue just because someone stayed online late. There is a reason so many people react badly to the phrase. A lot of them have watched &amp;quot;work ethic&amp;quot; used as a euphemism for being underpaid, overworked, and guilted into performing loyalty for institutions that would drop them in a week. That criticism is fair, and that is not the version worth defending.&lt;/p&gt;
&lt;p&gt;It is also not the loud version. In my experience, the people who talk the most about how late they stayed, how many hours they put in, and how hard they ground last week are almost never the ones actually grinding. Real work ethic usually comes from the sleepers. The quiet ones who are just methodically crushing what is in front of them and do not particularly need anyone to notice. They are not doing it for a manager, a review cycle, or a LinkedIn post. They are doing it because there is something internal driving them. Their own well-being. Their own curiosity. Their own standard for what they will accept from themselves. That fire does not announce itself, and it does not need external validation to stay lit. It just keeps going.&lt;/p&gt;
&lt;p&gt;That is the version worth defending. The standard you hold yourself to. The effort you invest in your own capacity. The habit of learning. The willingness to get better at things that matter. The refusal to become passive while waiting for permission, validation, funding, management, or rescue.&lt;/p&gt;
&lt;p&gt;You do not build that for shareholders. You build that because it makes you more dangerous, more capable, and more free.&lt;/p&gt;
&lt;h2&gt;Find that easy button yet?&lt;/h2&gt;
&lt;p&gt;There has never been an easy button that was uniquely yours, and there never will be. There will be windows, timing, luck, and people with better networks, better health, better opportunities, and cleaner starts than you. Plenty of people will get ahead for reasons that have nothing to do with merit. That has always been true.&lt;/p&gt;
&lt;p&gt;The point is not that hard work guarantees outcomes. It does not. The point is that work ethic is still the highest-leverage variable that stays under your control for a long time. It compounds. It sharpens taste. It builds judgment. It earns trust. It lets you capitalize when the window opens. It gives the tools something solid to attach to.&lt;/p&gt;
&lt;p&gt;Without that, all this new leverage just turns into more noise. With it, you really can 10x, 20x, even 100x yourself.&lt;/p&gt;
&lt;p&gt;That is the real opportunity right now. Not to posture. Not to cosplay as a founder. Not to collect prompts. Not to wait for somebody else to pick you. To build, to learn, to get unreasonably good, to use the tools without hiding behind them, and to invest in yourself before anyone else decides to.&lt;/p&gt;
&lt;p&gt;This moment is wide open. The ability to make crazy things is more accessible than it has ever been. The barrier to trying is lower. The excuse set is smaller. The distance between idea and first version is collapsing in real time. That should not make you softer. It should make you more dangerous.&lt;/p&gt;
&lt;h2&gt;Borrowed competence&lt;/h2&gt;
&lt;p&gt;If everyone has leverage, the differentiator becomes who actually leverages it. If everyone can start, the differentiator becomes who keeps going. If everyone can make noise, the differentiator becomes who can still produce signal.&lt;/p&gt;
&lt;p&gt;Work ethic is not becoming obsolete. It is becoming easier to see. And in a world full of borrowed competence, polished demos, and low-friction excuses, that may be the most valuable moat left.&lt;/p&gt;
</content:encoded><dc:creator>Mark Hayden</dc:creator><media:thumbnail url="https://markhayden.dev/images/social/auto/work-ethic-is-still-the-moat.webp"/><media:content url="https://markhayden.dev/images/social/auto/work-ethic-is-still-the-moat.webp" medium="image" type="image/webp"/><category>ai</category><category>execution</category><category>career</category><category>philosophy</category><author>hi@markhayden.me (Mark Hayden)</author></item><item><title>Like an Onion, Agentic Memory Has Layers</title><link>https://markhayden.dev/thoughts/agentic-memory-has-layers/</link><guid isPermaLink="true">https://markhayden.dev/thoughts/agentic-memory-has-layers/</guid><description>Memory in agents isn&apos;t one thing. Four layers — context window, session state, compiled context, durable memory — and how to reason about each.</description><pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hacker News: “ChatGPT forgets everything every time you close the tab.” LangChain forum: “What’s the difference between checkpointing and long-term memory?” Product manager: “We need memory for our agent.” CTO across the hall: “We already have memory. We use a vector database.”&lt;/p&gt;
&lt;p&gt;Same word. Not even close to the same thing.&lt;/p&gt;
&lt;p&gt;This is the first expensive mistake in building agentic systems: treating memory as a single concept. It is not. It is at least four separable things that got collapsed under one word, and you cannot make good design decisions, or even use these systems well day to day, until you pull them apart.&lt;/p&gt;
&lt;h2&gt;The four things we keep conflating&lt;/h2&gt;
&lt;h3&gt;1. The context window&lt;/h3&gt;
&lt;p&gt;The prompt you hand the model for a single turn. Not memory. More like RAM. It is working space, it evaporates the moment the call returns, and every LLM call rebuilds it from scratch.&lt;/p&gt;
&lt;p&gt;When users complain the model &amp;quot;forgot&amp;quot; something from earlier in the chat, they are almost always noticing that the context window got too full and older turns fell out. That is not a memory failure. It is a capacity failure. Fixing it requires eviction policy, not persistence.&lt;/p&gt;
&lt;h3&gt;2. Session state&lt;/h3&gt;
&lt;p&gt;What lets a chat feel like a chat. The transcript. The record of what was said, what tools ran, what the model decided. It lives on disk or in a database somewhere, and the system reads enough of it back before each turn to reconstruct context.&lt;/p&gt;
&lt;p&gt;ChatGPT&amp;#39;s history sidebar is this. &lt;a href=&quot;https://docs.langchain.com/oss/python/langgraph/persistence&quot;&gt;LangGraph&amp;#39;s checkpoints&lt;/a&gt; are this. &lt;a href=&quot;https://developers.openai.com/api/docs/guides/conversation-state&quot;&gt;OpenAI&amp;#39;s conversation-state model&lt;/a&gt; is this. Without it, every message is a cold start.&lt;/p&gt;
&lt;p&gt;Session state is &lt;em&gt;replay infrastructure&lt;/em&gt;. It is not the same as remembering things about you across conversations.&lt;/p&gt;
&lt;h3&gt;3. Compiled context&lt;/h3&gt;
&lt;p&gt;This is the in-between layer almost nobody names, but it is where most of the leverage is. Summaries, cached packs, handoff bundles, pinned project notes, policy briefs, distilled artifact digests. Anything pre-processed into a form the model can ingest efficiently belongs here.&lt;/p&gt;
&lt;p&gt;Anthropic now makes &lt;a href=&quot;https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching&quot;&gt;prompt caching&lt;/a&gt; a first-class API primitive, and Google does the same with &lt;a href=&quot;https://ai.google.dev/gemini-api/docs/caching/&quot;&gt;context caching&lt;/a&gt;. Claude Code&amp;#39;s &lt;code&gt;CLAUDE.md&lt;/code&gt; is compiled context. A project brief you hand a new agent is compiled context. A compaction summary is compiled context.&lt;/p&gt;
&lt;p&gt;Compiled context is not raw history and is not durable typed memory. It is &lt;em&gt;condensed reference material&lt;/em&gt; designed to slot into the prompt cheaply and repeatedly.&lt;/p&gt;
&lt;h3&gt;4. Durable memory&lt;/h3&gt;
&lt;p&gt;What people actually mean when they say &amp;quot;the agent should remember me.&amp;quot; Cross-session facts and preferences. &amp;quot;The user prefers concise answers.&amp;quot; &amp;quot;We decided last month to use Postgres, not Mongo.&amp;quot; &amp;quot;This project&amp;#39;s deadline is Friday.&amp;quot; This layer outlives the conversation. It is what &lt;a href=&quot;https://openai.com/index/memory-and-new-controls-for-chatgpt/&quot;&gt;ChatGPT&amp;#39;s memory feature&lt;/a&gt; is trying to do at the product level, even if OpenAI describes it in terms of saved memories and chat-history-derived personalization rather than a typed developer-facing store. It is also what &lt;a href=&quot;https://docs.mem0.ai/overview&quot;&gt;Mem0&lt;/a&gt;, &lt;a href=&quot;https://docs.letta.com/guides/core-concepts/stateful-agents&quot;&gt;Letta&lt;/a&gt;, and &lt;a href=&quot;https://docs.cloud.google.com/agent-builder/agent-engine/memory-bank/overview&quot;&gt;Vertex AI Agent Engine Memory Bank&lt;/a&gt; are built around.&lt;/p&gt;
&lt;p&gt;Durable memory is &lt;em&gt;the only one of these four that actually has identity across time&lt;/em&gt;. It is also the one most systems get wrong, because they treat it as a bucket to dump summaries into, rather than a typed, scoped, revisioned store.&lt;/p&gt;
&lt;h2&gt;Why the conflation is expensive&lt;/h2&gt;
&lt;p&gt;If you believe memory is one thing, you build one system. You pick a vector database, call it memory, and move on. Then you discover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your &amp;quot;memory&amp;quot; makes the model slower because every turn re-embeds the whole transcript.&lt;/li&gt;
&lt;li&gt;Your agent &amp;quot;remembers&amp;quot; things from conversations the user thought were private.&lt;/li&gt;
&lt;li&gt;You cannot tell whether something the agent claims to recall came from the current thread, last week&amp;#39;s conversation, a compacted summary, or a stray scratchpad.&lt;/li&gt;
&lt;li&gt;When the user says &amp;quot;that&amp;#39;s wrong, forget that,&amp;quot; you have no idea which layer to correct.&lt;/li&gt;
&lt;li&gt;When the user starts a new project, every memory from every other project floods in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not retrieval problems. They are &lt;em&gt;category errors&lt;/em&gt; dressed up as retrieval problems.&lt;/p&gt;
&lt;h2&gt;The tier model&lt;/h2&gt;
&lt;p&gt;The cleanest way to hold all four in your head is as tiers, with increasing durability and decreasing volume.&lt;/p&gt;
&lt;p&gt;Information flows both ways. A preference observed in working context gets &lt;em&gt;promoted&lt;/em&gt; to durable memory. Durable memory gets &lt;em&gt;compiled&lt;/em&gt; into a project pack that gets &lt;em&gt;pinned&lt;/em&gt; into working context at the start of the next session. A session gets &lt;em&gt;compacted&lt;/em&gt; into a summary that may or may not deserve promotion to durable. Whether it does is a governance decision, not a storage decision.&lt;/p&gt;
&lt;p&gt;This is &lt;a href=&quot;https://arxiv.org/abs/2310.08560&quot;&gt;MemGPT&amp;#39;s&lt;/a&gt; big insight, reframed. Your LLM is a CPU, your context window is RAM, and everything else is storage at different tiers with different access patterns.&lt;/p&gt;
&lt;h2&gt;Two orthogonal dimensions: class and scope&lt;/h2&gt;
&lt;p&gt;Once you have tiers, you need two more distinctions.&lt;/p&gt;
&lt;h3&gt;Class, the shape of a memory&lt;/h3&gt;
&lt;p&gt;A user preference is not the same thing as a project decision, an artifact digest, or a speculative hypothesis. Each has different fields, lifecycle rules, and retrieval semantics.&lt;/p&gt;
&lt;p&gt;A working taxonomy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fact&lt;/code&gt; — a semantic claim about the world&lt;/li&gt;
&lt;li&gt;&lt;code&gt;preference&lt;/code&gt; — a user&amp;#39;s standing choice&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decision&lt;/code&gt; — a project ruling with rationale and alternatives considered&lt;/li&gt;
&lt;li&gt;&lt;code&gt;artifact&lt;/code&gt; — a reference to a canonical source with version&lt;/li&gt;
&lt;li&gt;&lt;code&gt;procedure&lt;/code&gt; — a how-to or runbook&lt;/li&gt;
&lt;li&gt;&lt;code&gt;policy&lt;/code&gt; — a rule that must be followed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hypothesis&lt;/code&gt; — a speculative claim, explicitly non-authoritative&lt;/li&gt;
&lt;li&gt;&lt;code&gt;episode&lt;/code&gt; — a time-bound event trace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why this matters: retrieval should behave differently for each. A decision&amp;#39;s rationale should be preserved in full. A hypothesis should never surface as if it were fact. A preference should supersede its predecessor instead of appending. An artifact should know its source version so you can invalidate it when the source changes.&lt;/p&gt;
&lt;h3&gt;Scope, the boundaries on visibility&lt;/h3&gt;
&lt;p&gt;Scope is orthogonal to class, but it is not a single linear ladder. It is better modeled as multiple intersecting dimensions, each with its own hierarchy. Any given memory belongs to a set of coordinates, and effective retrieval is the &lt;em&gt;intersection&lt;/em&gt; across them.&lt;/p&gt;
&lt;p&gt;Take an image-generation agent named Pixel. Her memory lives along several axes at once.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Craft/domain axis.&lt;/strong&gt; Camera technique, composition rules, color theory. Stable across every job she ever takes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent axis.&lt;/strong&gt; Pixel&amp;#39;s own operating style, tone, voice. Distinct from the other agents in the same workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project-type axis.&lt;/strong&gt; Sports photography and portrait sessions have different conventions, lighting defaults, pacing. A memory good for one is wrong for the other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client/relationship axis.&lt;/strong&gt; What this specific client likes, what they rejected last time, their brand guidelines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Task/thread axis.&lt;/strong&gt; What just happened in the current conversation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identity axis.&lt;/strong&gt; User → team → workspace → org.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When Pixel retrieves memory for a turn, the relevant set is not &amp;quot;everything under a node in a tree.&amp;quot; It is the intersection of her current coordinates along &lt;em&gt;every&lt;/em&gt; axis. This agent + this project-type + this client + this task, plus the standing craft memory that applies to all of them.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://code.claude.com/docs/en/memory&quot;&gt;Claude Code&amp;#39;s&lt;/a&gt; precedence model is a simplified linear version of this, where more specific memory files override broader ones (for example, project-level guidance can override user-level guidance). Letta&amp;#39;s attachable memory blocks are closer to the real shape. Each block is a coordinate and an agent&amp;#39;s effective memory is the union of the blocks currently attached to it. Google Vertex AI Memory Bank formalizes the access side with IAM conditions over scope expressions.&lt;/p&gt;
&lt;p&gt;The practical rule every serious system ends up at. &lt;strong&gt;Scope must fail closed.&lt;/strong&gt; If you cannot resolve a retrieval&amp;#39;s coordinates, refuse, do not widen. Most privacy leaks in memory systems are silent scope-widening in disguise. &amp;quot;Just one more fallback&amp;quot; becomes &amp;quot;why did the agent just tell me about my coworker&amp;#39;s project?&amp;quot;&lt;/p&gt;
&lt;h3&gt;Classes and scopes interact: conditional memories&lt;/h3&gt;
&lt;p&gt;The class/scope split is useful, but in practice it is not fully orthogonal. Some of the most valuable memories are &lt;em&gt;conditional&lt;/em&gt;. Their applicability depends on the current coordinates along other axes.&lt;/p&gt;
&lt;p&gt;&amp;quot;My boss prefers green&amp;quot; is rarely universally true. It is &amp;quot;my boss prefers green &lt;strong&gt;when we&amp;#39;re pitching an environmental client&lt;/strong&gt;.&amp;quot; The same human has different preferences for retail pitches, healthcare, legal. Surface that memory in the wrong context and it becomes noise or, worse, a confident wrong answer.&lt;/p&gt;
&lt;p&gt;This shows up everywhere real agents work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A decision that only applies when the project type is X.&lt;/li&gt;
&lt;li&gt;A policy that only fires when handling a certain data category.&lt;/li&gt;
&lt;li&gt;A procedure that varies by client.&lt;/li&gt;
&lt;li&gt;An episodic pattern that only generalizes within a narrow condition.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Current systems handle this inconsistently. Mem0 attaches arbitrary metadata and lets you filter at retrieval time. LangGraph uses composite namespaces. Letta&amp;#39;s attachable blocks are a rougher analogue: attach the &amp;quot;environmental-client&amp;quot; block to the right agents in the right projects, and its contents become active. Google Vertex AI Memory Bank supports scope expressions that can encode conditions directly.&lt;/p&gt;
&lt;p&gt;The underlying insight. A memory&amp;#39;s retrievability is often a &lt;strong&gt;predicate over the current context&lt;/strong&gt;, not a single label. A cleanly typed preference can still need &amp;quot;applies-when: &lt;code&gt;client.type = environmental&lt;/code&gt;&amp;quot; attached to it. Good systems make that predicate explicit and inspectable. Weak ones leave it implicit in how the retrieval query happens to be built. Which is exactly how you get a &amp;quot;preference&amp;quot; that is accidentally right most of the time and confidently wrong the rest.&lt;/p&gt;
&lt;h2&gt;Pipelines are not tiers&lt;/h2&gt;
&lt;p&gt;One more distinction is worth naming. Tiers (working, session, compiled, durable) are &lt;em&gt;where&lt;/em&gt; memory lives. &lt;strong&gt;Pipelines&lt;/strong&gt; are the &lt;em&gt;processes&lt;/em&gt; that move information between tiers, and they are orthogonal to the tier model.&lt;/p&gt;
&lt;p&gt;Two pipelines worth knowing by name because they show up under different labels in almost every serious system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dreaming.&lt;/strong&gt; A process that runs over raw session traces and recall evidence and produces compiled artifacts: summaries, reflections, thematic groupings, consolidated briefs. The &lt;em&gt;output&lt;/em&gt; of dreaming is compiled context, not durable memory. Its job is to produce better inputs for the next tier up. The &lt;a href=&quot;https://arxiv.org/abs/2304.03442&quot;&gt;Generative Agents&lt;/a&gt; paper calls this &amp;quot;reflection.&amp;quot; Vertex AI Agent Engine Memory Bank frames a similar idea as consolidation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Habit formation.&lt;/strong&gt; A separate process that decides what, if anything, from the compiled tier should become durable. This is where reinforcement curves, frequency thresholds, confidence gates, and conflict resolution live. When a preference is observed repeatedly, or a decision is confirmed, a promotion pipeline writes it into durable memory with provenance, class, and supersession links. Mem0&amp;#39;s information-extraction, conflict-resolution, and storage pipeline is this. Claude Code&amp;#39;s auto-memory is a lightweight version.&lt;/p&gt;
&lt;p&gt;Other common pipelines: &lt;strong&gt;Compaction&lt;/strong&gt; (session → compiled summary), &lt;strong&gt;extraction&lt;/strong&gt; (raw transcript → typed durable memory), &lt;strong&gt;reflection&lt;/strong&gt; (episodic traces → higher-level insight), &lt;strong&gt;invalidation&lt;/strong&gt; (marking durable memories stale when source changes or supersession is detected), and &lt;strong&gt;revalidation&lt;/strong&gt; (checking whether a memory&amp;#39;s source version still matches).&lt;/p&gt;
&lt;p&gt;The important move is to keep tiers and pipelines cleanly separated in your head. A tier is a &lt;em&gt;place&lt;/em&gt;. A pipeline is a &lt;em&gt;policy&lt;/em&gt;. Most memory bugs are either a tier confusion (treating a compaction summary as durable truth) or a pipeline confusion (letting frequency alone justify durable promotion, which is how systems end up &amp;quot;remembering&amp;quot; their own dream output as fact).&lt;/p&gt;
&lt;h2&gt;Why this frame matters&lt;/h2&gt;
&lt;p&gt;Almost every serious problem in agent memory turns out to be one of four errors in disguise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tier error.&lt;/strong&gt; Treating a compaction summary like durable truth. Letting the context window double as the memory model. Dumping raw transcripts into the durable store.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Class error.&lt;/strong&gt; Storing a hypothesis next to a fact with equal retrieval weight. Treating all memories as flat text instead of typed records.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope error.&lt;/strong&gt; Pulling the wrong project&amp;#39;s decisions into the current thread. Letting a private scratchpad promote into shared memory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lifecycle error.&lt;/strong&gt; Never invalidating. Never superseding. Never noticing the source changed. Never distinguishing stale from current.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are the categories. Storage and retrieval are tactics you choose &lt;em&gt;after&lt;/em&gt; you have made these decisions, not before.&lt;/p&gt;
&lt;h2&gt;Where this goes from here&lt;/h2&gt;
&lt;p&gt;The field agrees more than you might think on the &lt;em&gt;shape&lt;/em&gt; of memory: multi-tier, typed, scoped, conditional. Where it diverges is on governance, promotion policy, and how much of the memory logic belongs in the runtime versus the store.&lt;/p&gt;
&lt;p&gt;That is the thread I want to pull on next. What Letta, LangGraph, Mem0, Google Vertex AI Memory Bank, Claude Code, AutoGen, and OpenAI&amp;#39;s Agents SDK all independently discovered about how to build these layers, and where they meaningfully diverge when it actually matters.&lt;/p&gt;
&lt;p&gt;If you are building any of this, the single most useful thing you can do right now is stop saying &amp;quot;memory&amp;quot; and start saying which of the four you mean.&lt;/p&gt;
</content:encoded><dc:creator>Mark Hayden</dc:creator><media:thumbnail url="https://markhayden.dev/images/social/auto/agentic-memory-has-layers.webp"/><media:content url="https://markhayden.dev/images/social/auto/agentic-memory-has-layers.webp" medium="image" type="image/webp"/><category>ai</category><category>memory</category><category>agents</category><category>architecture</category><author>hi@markhayden.me (Mark Hayden)</author></item><item><title>We’re Using AI to Replace Learning, Not Transform It</title><link>https://markhayden.dev/thoughts/ai-could-finally-make-learning-personal/</link><guid isPermaLink="true">https://markhayden.dev/thoughts/ai-could-finally-make-learning-personal/</guid><description>AI&apos;s biggest education shot isn&apos;t replacement — it&apos;s personalization. Adapting to the actual student instead of forcing one delivery system on everyone.</description><pubDate>Sun, 19 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My default position on AI and those just getting their careers started has not exactly been optimistic.&lt;/p&gt;
&lt;p&gt;I have spent a lot of time thinking it would flatten curiosity, replace effort with prompts, and train people to expect magic on demand. If every hard problem gets met with an instant answer, what happens to patience? What happens to struggle? What happens to the part of learning where you have to sit in confusion long enough for something to click?&lt;/p&gt;
&lt;p&gt;That version of the future still worries me.&lt;/p&gt;
&lt;p&gt;It is not hard to imagine a generation that becomes less capable because they have been taught to demand a response to every blank page, every equation, every essay, and every question, without ever understanding what it takes to get there. If the machine always rescues you, eventually you stop building the muscles required to rescue yourself.&lt;/p&gt;
&lt;p&gt;That is the cynical view, and for a while I thought it was the only honest one. Lately I have been thinking there is another version of this story, and it is a lot more interesting. The best case for AI in education is not that it makes learning easier. It is that it makes learning &lt;em&gt;fit&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;The boring science nobody argues with&lt;/h2&gt;
&lt;p&gt;None of this is a new argument. It has just never been practical at scale.&lt;/p&gt;
&lt;p&gt;In 1984, Benjamin Bloom published what became known as the &amp;quot;2-sigma problem.&amp;quot; Students who got one-on-one tutoring with mastery checks along the way dramatically outperformed students in a standard classroom. That is not a small lift. Roughly the gap between an average student and one in the top 2%.&lt;/p&gt;
&lt;p&gt;The follow-up research never fully reproduced that leap, but the direction held. &lt;a href=&quot;https://www.tandfonline.com/doi/abs/10.1080/00461520.2011.611369&quot;&gt;VanLehn&amp;#39;s 2011 review&lt;/a&gt; found that even intelligent tutoring software moved students from average toward roughly the top quarter of the class. Human tutors landed in the same neighborhood. &lt;a href=&quot;https://journals.sagepub.com/doi/10.1177/1529100612453266&quot;&gt;Dunlosky&amp;#39;s 2013 review&lt;/a&gt; catalogued what actually moves the needle and kept landing on the same boring winners. Retrieval practice. Spaced repetition. Interleaving. Worked examples. Not lectures. Not worksheets. Not personality quizzes.&lt;/p&gt;
&lt;p&gt;The bottleneck was never knowing what works. The bottleneck has always been attention per student. One teacher cannot simultaneously tell thirty different stories about the same concept, pace thirty different timelines, and diagnose thirty specific misunderstandings in real time.&lt;/p&gt;
&lt;p&gt;AI might be the first tool with a realistic shot at that kind of scale.&lt;/p&gt;
&lt;h2&gt;Nobody is a &amp;quot;visual learner&amp;quot;&lt;/h2&gt;
&lt;p&gt;One thing out of the way first, before this starts sounding like a BuzzFeed quiz.&lt;/p&gt;
&lt;p&gt;The idea that some people are &amp;quot;visual learners&amp;quot; while others are &amp;quot;auditory&amp;quot; or &amp;quot;kinesthetic&amp;quot; is not supported by the evidence. &lt;a href=&quot;https://www.psychologicalscience.org/news/releases/learning-styles-debunked-there-is-no-evidence-supporting-auditory-and-visual-learning-psychologists-say.html&quot;&gt;The Association for Psychological Science&lt;/a&gt; put it plainly. There is no credible case that matching teaching style to a student&amp;#39;s preference improves learning. A 2008 paper walked through the research and found the effect was close to zero. A 2017 follow-up put it even more bluntly. The title was &amp;quot;Stop Propagating the Learning Styles Myth.&amp;quot;&lt;/p&gt;
&lt;p&gt;Around 90 percent of teachers still believe in it anyway.&lt;/p&gt;
&lt;p&gt;So when I say &amp;quot;fit,&amp;quot; I do not mean matching some fixed sensory preference in a student&amp;#39;s head. I mean something more grounded. Meeting the student at their actual prior knowledge. Pacing to their actual speed. Swapping the representation of an idea when the first version fails to land. Content determines the best representation, not the learner&amp;#39;s self-reported type. Geometry needs diagrams. Poetry needs sound. History needs narrative. None of that is controversial, and none of it requires the learning-styles myth.&lt;/p&gt;
&lt;h2&gt;What &amp;quot;fit&amp;quot; actually looks like&lt;/h2&gt;
&lt;p&gt;For as long as school has existed in its modern form, students have mostly been asked to adapt themselves to the delivery mechanism. Same lecture. Same worksheet. Same pacing. Same explanation. Same tests. Some students happen to match the teacher and thrive. Some students survive. Some students quietly decide they are bad at a subject when really they were just handed it in the wrong language.&lt;/p&gt;
&lt;p&gt;That part matters more than people admit.&lt;/p&gt;
&lt;p&gt;A good AI-driven learning system does not just re-explain the material. It checks understanding constantly. It adapts difficulty in real time. When the first example does not land, it pulls up another one from a different angle. It drops the level when the student is lost and lifts it when they are bored. It catches the specific error, like &amp;quot;you forgot the negative sign in step two,&amp;quot; instead of just marking the whole answer wrong.&lt;/p&gt;
&lt;p&gt;That is the part that keeps sticking with me.&lt;/p&gt;
&lt;p&gt;So much of education gets blamed on the student when the real failure is the delivery system. We treat mismatch like inability. We confuse boredom with incompetence. We let one bad fit with a teacher shape an entire relationship to a subject.&lt;/p&gt;
&lt;p&gt;I’ve generally done well in school and beyond. Geometry was the one class that never really clicked. It wasn’t a lack of effort, and it wasn’t ability. The pace and the delivery just never lined up. Looking back, there was no mechanism for translating the material into a form that actually worked for me. No way to try the concept from a second angle. No way to check whether the first angle had even landed. No way to notice that I had been quietly lost since the first two weeks of the semester.&lt;/p&gt;
&lt;p&gt;That is not a small thing.&lt;/p&gt;
&lt;p&gt;There are probably millions of people walking around with fake conclusions about themselves because school delivered a subject badly and called the result merit.&lt;/p&gt;
&lt;h2&gt;The uncomfortable part&lt;/h2&gt;
&lt;p&gt;The current evidence on AI in education is not a clean story. It is also not all on my side.&lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;https://www.media.mit.edu/publications/your-brain-on-chatgpt/&quot;&gt;2025 MIT Media Lab study&lt;/a&gt; put students through essay-writing tasks while measuring their brain activity with EEG. The group using ChatGPT showed the weakest neural connectivity in the study. Their sense of ownership over their own work dropped. By the final session, many were mostly copy-pasting. The paper describes the LLM users as &amp;quot;consistently underperforming at neural, linguistic, and behavioral levels.&amp;quot;&lt;/p&gt;
&lt;p&gt;Wharton researchers, led by Bastani in 2024, tested GPT-4 as a math tutor with Turkish high-school students. In-session performance jumped by roughly 48 percent with the AI available. Then they pulled the AI away and sat the students for a closed-book exam. Performance dropped about 17 percent compared to students who had never used it. Classic pattern. Scaffolding becomes a crutch.&lt;/p&gt;
&lt;p&gt;In a 2025 survey of 319 knowledge workers, Microsoft Research and Carnegie Mellon found that the more confident people were in the AI, the less critical-thinking effort they applied, and the more homogenized their output became.&lt;/p&gt;
&lt;p&gt;And &lt;a href=&quot;https://blog.khanacademy.org/khan-academy-efficacy-results-november-2024/&quot;&gt;Khan Academy&amp;#39;s own 2024 efficacy report on Khanmigo&lt;/a&gt;, plus follow-up analyses like &lt;a href=&quot;https://www.edweek.org/technology/opinion-can-an-ai-powered-tutor-produce-meaningful-results/2025/07&quot;&gt;this one in EdWeek&lt;/a&gt;, show some engagement gains and mixed learning outcomes. Not the revolution the initial pitch suggested.&lt;/p&gt;
&lt;p&gt;Read together, those studies do not kill the thesis. They sharpen it. The same thing that makes LLMs feel magical is the thing that undermines learning. Fluent, confident prose on demand. Instant answers. No friction. That is the opposite of what the research says actually works. If the AI hands the answer over too quickly, the student never builds the thing in their own head.&lt;/p&gt;
&lt;p&gt;So the real question is not &amp;quot;does AI help learning.&amp;quot; It is whether we can build products that enforce retrieval, productive struggle, and mastery instead of shortcutting them. Those are very different systems. Most of what is shipping today is the wrong kind.&lt;/p&gt;
&lt;h2&gt;The pattern is older than AI&lt;/h2&gt;
&lt;p&gt;Audrey Watters has been writing about this for years in &lt;em&gt;Hack Education&lt;/em&gt; and &lt;em&gt;Teaching Machines&lt;/em&gt;. Every wave of educational technology since B.F. Skinner&amp;#39;s teaching machines in the 1950s has promised some version of &amp;quot;personalized learning at scale&amp;quot; and has mostly delivered worksheets in a new package. The warning in her work is not that the promise is fake. It is that the hype keeps running about a decade ahead of the reality, and the casualties in between are real kids.&lt;/p&gt;
&lt;p&gt;Dan Meyer, who has spent a long time thinking about how people actually learn math, has made a related point about current AI tutors. They default to hint-giving and answer-shaping that short-circuits the productive struggle that is where math learning actually happens. A fluent, confident chatbot that helps a student past every moment of discomfort is not a tutor. It is an escape hatch.&lt;/p&gt;
&lt;p&gt;None of that means the idea is fake. It means the first generation of products is mostly missing the point.&lt;/p&gt;
&lt;h2&gt;The garbage around AI is the bigger threat&lt;/h2&gt;
&lt;p&gt;Honestly, the bigger danger to younger generations is not AI in classrooms. It is the garbage surrounding AI everywhere else.&lt;/p&gt;
&lt;p&gt;The real poison is clickbait. It is bullshit videos, fake gurus, thinly disguised vaporware, and an endless stream of people promising impossible outcomes because hype pays better than honesty. That ecosystem trains kids to chase shortcuts, confuse marketing with substance, and expect results without contact with reality. It is not education. It is monetized delusion.&lt;/p&gt;
&lt;p&gt;And the effect of that stuff is not abstract. It changes plasticity. It changes what people believe work even is. If all you see is &amp;quot;build an app in one prompt,&amp;quot; &amp;quot;make passive income with no skill,&amp;quot; or &amp;quot;launch a company this weekend with AI,&amp;quot; eventually your brain starts calibrating itself to fantasy instead of effort.&lt;/p&gt;
&lt;p&gt;I see it up close too. Someone has an app idea. Might even scrape together a little bit of funding. Goes hard on mockups and designs. On paper, that all sounds great. In reality, it is window dressing. No grasp of what a real payment system involves. Security is an afterthought. No plan for maintaining the thing after launch. Just enough surface area to look real to someone who does not know what they are looking at. And if one of these does make it to production, the risk lands on actual customers. Some of these ideas can absolutely come to life. I just see far more &amp;quot;this is going to be a disaster&amp;quot; than &amp;quot;this is a real thing.&amp;quot;&lt;/p&gt;
&lt;p&gt;And the depressing part is that plenty of companies will still reward that kind of thing because they are also being trained by the same hype loop. The issue is not ambition. The issue is a culture that keeps teaching people presentation is the product.&lt;/p&gt;
&lt;p&gt;That is where I think a lot of the real danger lives. Not in AI as a learning tool, but in a broader social willingness to lie, posture, and prey on the uninformed because there is always money on the other side of the click.&lt;/p&gt;
&lt;h2&gt;Where this leaves me&lt;/h2&gt;
&lt;p&gt;My hot take is not that AI will save education. It is that it might finally expose how bad we have always been at personalizing learning, and how much wasted human potential has been written off as laziness, disinterest, or low ability when the real issue was poor translation.&lt;/p&gt;
&lt;p&gt;The risk is still real. The magic-thinking problem is still real. The temptation to use AI as a substitute for effort is still real. The current crop of products mostly makes those risks worse, not better. If the design goal stays &amp;quot;engagement and fluent answers,&amp;quot; we will end up with a generation that is more entertained, less capable, and more convinced they understand things they do not.&lt;/p&gt;
&lt;p&gt;But if we are serious and honest about this, there is another possibility on the table. A system that enforces retrieval, insists on productive struggle, gates progression on actual mastery, and adapts the representation of a concept until it lands. Not a chatbot that does homework for you. A translation layer between the curriculum and the student.&lt;/p&gt;
&lt;p&gt;Maybe AI does not make people dumber than a brick.&lt;/p&gt;
&lt;p&gt;Maybe, if we build it with any respect for the actual science of how people learn, it makes it a lot harder for broken systems to keep convincing smart people they are.&lt;/p&gt;
</content:encoded><dc:creator>Mark Hayden</dc:creator><media:thumbnail url="https://markhayden.dev/images/social/auto/ai-could-finally-make-learning-personal.webp"/><media:content url="https://markhayden.dev/images/social/auto/ai-could-finally-make-learning-personal.webp" medium="image" type="image/webp"/><category>ai</category><category>education</category><category>learning</category><author>hi@markhayden.me (Mark Hayden)</author></item></channel></rss>