![]()
You told the agent early on, “never touch README.md, the docs team owns it.” Forty turns and one compaction later, it edits README.md anyway. The rule lived only in old chat history, and the summary dropped it.
Octomind 0.58.5 keeps rules you set in chat for the session, through compaction and restarts. This post covers 0.58.1 through 0.58.5 since our last update. The open-source AI coding CLI update is available today.
In the Governance Decay preprint (2026), violations in its 1,323-episode benchmark rose from 0% with a policy in full context to 30% after compaction, while constraints retained in summaries stayed at 0%.
A familiar workaround is to put rules in a project instruction file: Anthropic's context-window documentation says project-root CLAUDE.md is re-injected after compaction, while path-scoped Claude Code rules and nested files reload on demand and, once loaded into message history, can be summarized away.
But Gloaguen et al.'s AGENTS.md preprint (2026) found context files did not generally improve task success and raised inference cost by over 20% on average.
These findings concern their own benchmarks and tools, not Octomind; they support keeping user-set rules explicit and few, not a measured accuracy claim for this release.
Set a rule once for this session
Say the rule in your own words: “From now on, never modify README.md — the docs team owns it.” Octomind keeps the exact words from your message and includes them in a standing-rules section at the end of the context on each turn.
The recitation looks like this:
Standing session rules — set by the user in this session, in force until the user revokes them:
- never modify README.md — the docs team owns itTo take it back, mention the rule and cancel it: “The docs team handed README.md back to us, so you can modify README.md again.” A new request to edit README.md by itself is a conflict, not a revocation.
We checked this with a four-turn smoke test before the release. Each turn ran as a new octomind run developer:general -n rules-smoke process resuming the same named session, so every message was also a restart. On the third turn we asked for a 'Version 1.0' line in both notes.txt and README.md. The agent added it to notes.txt and answered: “I did not touch README.md: your standing rule says the docs team owns it, and "release day" doesn't revoke that.”
After the explicit handback on the fourth turn, it edited README.md and the rule was gone from the session. The same run showed that a task-only request — “Don't touch src/main.py in this change” — was not stored as a standing rule.
The test also caught a bug before you could. In the first run, the agent refused README.md on the third turn, but the classifier recorded the conflicting request itself as a revocation, because the request's own words passed the verbatim check. A later turn would have lost the rule. 0.58.5 ships the fix: revoking now needs words about the rule itself, and a request that would break a rule keeps it in force.
Rules are capped at 200 characters each, with at most 4 additions per message and 8 held at once; adding a ninth evicts the oldest. Rules last for this session only, so a new session starts empty.
Capture uses the supervisor's model classifier: it can miss a rule or rarely store a task-local one, and capture depends on that model answering. In an earlier smoke attempt when the supervisor was unreachable, turns completed but no rules were recorded. Check /info for resolve calls to see whether classification ran.
Supervision is on by default with the default supervisor, gate, and plan settings. Per-turn prohibitions still come from your latest request alone. Project-level instructions in AGENTS.md remain separate and are still read from the session working directory.
Compaction survival is covered by tests, but this smoke run stayed short and did not exercise context compaction live. During a fold, Octomind pins standing rules outside the lossy summary and rejects the fold if the rules change between preparation and commit. Restarting or resuming the same session keeps its rules; older saved sessions load with none. For durable project-wide instructions, keep using AGENTS.md.
Keep lessons with the repository
Start a session from any subfolder and scoped lessons now use the nearest repository root: the ancestor containing .git. That can be a .git directory or the .git file used by worktrees and submodules. The search stops before your home directory; outside a repository, Octomind uses the current directory's own name. Separate worktrees keep separate keys based on each worktree directory.
Before this change, a session started in repo/src could store lessons under src, mixing lessons from unrelated repositories. In the smoke run, sessions started from src/, but lessons were stored under learning/repo/…. The same repository key now feeds lesson extraction, recall, the evolution worker, and /learning. Scoped extraction also requires the session to have an explicit, non-empty role.
Lessons that claim to apply everywhere now have to earn it. The smoke run caught this one too: the extractor saved the README rule as a global lesson, so it would have followed you into every repository. In 0.58.5, a lesson extracted as global must pass the same user-wide check that promotes rules recurring across projects; a rule tied to one project's files, team, tools, or task is stored with that project instead. In a rerun with the fix, nothing reached the global store, and the README lesson stayed under learning/repo/developer/.
One detail to remember: old lessons stay under their previous subfolder key and aren't read under the new repository key. There is no automatic migration. If you need them, move those files by hand under the repository's name in learning/; old keys such as src may contain lessons from several repositories. See the learning guide for scoped lesson storage.
The fixes since 0.58.0
- 0.58.1 returns session MCP task calls without waiting. Results and errors arrive in the session inbox, while non-session calls remain synchronous. The monitor and session status show pending work, which you can stop by ID.
- 0.58.2 reuses specialist briefs across turns and restores them with sessions. Condensation also keeps reads of whole-task targets and recovery content.
- 0.58.3 preserves markdown links and stable task listings. Image targets are skipped during link extraction, and unchanged monitor listings no longer gain elapsed time.
- 0.58.4 keeps invented reminders out of workflow results. Parallel workflows handle expanded branches and
min_success; conditional workflows record skipped branches as empty. - 0.58.5 keeps recitations and compression state consistent. Recitations avoid duplicate injection, ignore untrusted client blocks, use whole-word constraint markers, and refresh when context or notes change. Resumed sessions keep one compression hint, and compression counters no longer change the cached prompt prefix. This release also ships octolib 0.43.0.
Coming soon to Octomind Cloud
Octomind 0.58.5 is coming to Octomind Cloud. Cloud machines pick up the new version the next time they start, with nothing to set up.
Update to Octomind 0.58.5
curl -fsSL https://octomind.run/install.sh | bash -s -- --version 0.58.5
octomind --versionSee the installation guide for other methods and the full changelog for every change since 0.58.0.
Then try it: tell Octomind one thing to leave alone for the rest of the session, resume that session, and ask for a change that would break the rule.



