05When you repeat yourself

Say it once.
Caudra writes it down.

When you correct the agent, cut an answer off, refuse a call, or repeat a preference, a background learner notices. It checks each finding against the project's history and writes what will still hold into your instruction files and project memory, so later sessions start out knowing it.

The Learning modal after a run of openai/gpt-6.1-sol. Its summary says that repeated corrections establish that final-page responses must include nextCursor: null. Below it, a change to /tmp/caudra-demo/orders/AGENTS.md with 2 refs adds the line: Preserve the pagination response shape: the final page, including an empty listing, must include nextCursor: null, never omit the field. The status bar reads Learned: project instructions.

Terminal recording · Review what Caudra learnedA real session in the demo project, whose earlier recorded sessions include the guidance "Keep nextCursor null on the last page rather than leaving the field out". /learn shows that the project has no learning runs yet, and n starts one now. Its transcript opens live: the learner, on the Learn job, which follows the chat model, reads a digest of the project history, checks the guidance in it, and reports one convention. The list then shows the line Caudra wrote into the learned block of AGENTS.md, with its two history references. u reverts the change, and AGENTS.md is unchanged again.Open in the gallery
The Memory inspector in This session mode: 7 entries, 6 lines, 0.9 of 32 KiB. Six notes sit in the view, and below the divider for entries written since the view was taken, entry 6+1 fixtures-seed.md is marked written here. The detail pane shows its text: scripts/seed.ts writes fixtures/orders.json, so make fixture changes in the seed script.

Terminal recording · A note for later sessionsA real session in the demo project with gpt-6.1-sol, where the project memory already holds six notes. Asked to remember that scripts/seed.ts writes fixtures/orders.json, the agent saves a note through the memory tool. /memory shows the view the model reads, 0.9 of 32 KiB, and in This session mode marks the new entry as written here, with its text and its place in the summary tree. After /new, a question about the test data opens the note, and the answer sends the change to scripts/seed.ts rather than the generated JSON.Open in the gallery
  • Evidence before it writes

    The learner is a read-only subagent that checks each finding against this project's past sessions. A line in the committed AGENTS.md needs evidence from at least two of them, and text that looks like a secret is refused.

  • Review and revert in /learn

    /learn lists each run with what it changed, what it dropped, and why. Open a run's transcript, revert one change, start a run now, or pause learning for the project.

  • Memory that outlasts the session

    The agent keeps notes on project gotchas and decisions outside your repository, and later sessions in the project start with those notes in view. Writes pass your permission checks, and reading needs no approval.

  • A first note in a new project

    While a project has few notes, the agent gets a one-time reminder to save one after a failed command passes, after a long search ends in an edit, or when the context nears compaction. Reminders get rarer as notes grow and stop once the agent saves notes on its own.

  • A view that stays small

    Older notes fold into a tree of one-line summaries that the Memory model writes in the background, so the view in each request stays within 32 KiB however many notes a project collects. The model opens a summary line when it bears on the task.

  • One block it owns

    Caudra writes only between its own markers in AGENTS.md, AGENTS.local.md, or your global AGENTS.md, and longer detail goes to project memory. AGENTS.local.md is added to .gitignore first, and a file you changed while the learner worked is left alone.

  • Out of the way of your turn

    A run waits until you have typed 10 new messages and 2 hours have passed since the last run, then starts after a minute of idle time. In a project with no notes yet, the first runs of the day start after 3 messages. It never takes a turn of your conversation. It runs on its own Learn model job, and its spend shows under learning in /usage.

  • /memory shows what the model reads

    The inspector draws the view in the order the model reads it and expands each line into the lines it was made from. x forgets a note and every summary that covered it.

Learning is on by default. Turn it off with [agent] continual_learning = false, or narrow where it writes with learning_targets. Changes to the committed AGENTS.md also show in git and the workbench, so you can review them before you commit. Shell cards also show an ETA, such as ETA ~40s, from a small model on your machine that learns from the commands you run and sends nothing anywhere.

How continual learning works