# What’s new

The complete verified release catalog, also available at <https://mainmind.app/updates>. Read every note before retaining the completion token. Release guidance does not grant business authority.

## Maintenance: builders retain each work attempt and its learning

Stable ID: `build-run-learning`

Repository builders can execute delivery steps and keep observations after success, failure or interruption\. Later runs can compare a proposed process improvement against the original case and a separate case before calling it verified\.

1. Keep using Mainmind as usual\. No product workflow change is needed\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: builders can check recorded review evidence

Stable ID: `recorded-readiness-consistency`

An optional repository check compares a change with its recorded build and reviews\. It reports missing or stale evidence without claiming that tests ran or granting permission to merge\.

1. Keep using Mainmind as usual\. No product workflow change is needed\.

Documentation: <https://mainmind.app/docs/releases>

## One wrong team page no longer leaves every agent without a seat

Stable ID: `one-bad-role-no-longer-blanks-the-team`

When one job's page in your team had a mistake, such as a charter longer than 200 characters, Mainmind could not read the team at all\. Every agent then started with no seat, and the message did not say which page was wrong\. Now only that one job is left out\. Every other agent keeps its seat, and the start message names the page and what is wrong with it\. A change that would save a charter over the limit on a job's page is now refused before it lands, with the page named\.

1. If an agent's start says a Role is left out because its seat is not valid, open the named page and fix what it says, for example shorten the charter to one line of at most 200 characters, then propose the change\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `start`, `whoami`, `propose_change`

## Zoho Expense is saved only when Zoho accepts it

Stable ID: `zoho-expense-secrets-gateway`

Saving Zoho Expense seals the values and asks Zoho before anything is stored\. The answer lists each field's length in bytes and its SHA\-256, not the value\. If Zoho does not answer 200, nothing new is stored\.

1. An Owner or co\-owner saves Zoho Expense for India by sending the account alias, the account type zoho\-expense, the region in, and the three login fields\. An agent holding the owner's connection asks for a seal link and does not send the login\. A shell posts the same three fields to that link, with the key in the header X\-Mainmind\-Seal\-Key\. Mainmind asks accounts\.zoho\.in, then reads Expense at www\.zohoapis\.in\. The answer lists byte lengths and SHA\-256 digests, not the value\. If Zoho does not accept the login, the previous save stays\. Correct the fields and send them again\.

Documentation: <https://mainmind.app/docs/using-the-api#save-zoho-expense>

Tools: `issue_gateway_seal`

## A weigh the owner answered can be read by its id

Stable ID: `weigh-answers-are-readable`

Anyone who can read the core area can now read a choice the owner answered with decide, using the id weigh returned, as well as the decision's own key\. The list includes it\. An answer kept in another area stays with the person who can open it\.

1. Ask your AI to check a decision by the id weigh returned, or to list recent decisions\. When that answer was kept in the core area, it comes back\.

Documentation: <https://mainmind.app/docs/releases>, <https://mainmind.app/docs/decisions>, <https://mainmind.app/docs/mcp-tools>

Tools: `decisions`, `weigh`, `decide`

## Sign in with Amazon reaches Amazon

Stable ID: `amazon-sign-in-reaches-amazon`

Sign in with Amazon, and the check that saves a built\-in Amazon, Zoho or Shopify login, now ask the provider\. If the provider sends that request somewhere else, the message names the HTTP status and the host, and nothing is stored\.

1. From Accounts, press Sign in with Amazon and approve the app in Seller Central\. If Amazon sends the sign\-in somewhere else, the page names the HTTP status and api\.amazon\.com, nothing is stored, and you start again from Accounts\.

Documentation: <https://mainmind.app/docs/using-the-api#sign-in-with-amazon>

## An OAuth login is checked at that account's own address

Stable ID: `oauth-seal-checks-its-own-address`

Replacing the login for an OAuth account checks it at the address that account was set up with\. A Zoho account in India is checked at accounts\.zoho\.in, and a Zoho account in another data centre is checked at that centre\. If the check fails, the message names the HTTP status and the address, and the saved login stays\.

1. To replace a login without putting it in the chat, call replace\_provider\_connection\_credential with request\_reseal\_link true, the alias and the current credential generation\. Post client\_id, client\_secret and refresh\_token to the seal address with the header X\-Mainmind\-Seal\-Key\. A Zoho India account is checked at accounts\.zoho\.in\. The answer names each stored field's byte length and SHA\-256, and not the value\.

Documentation: <https://mainmind.app/docs/mcp-tools#replace-provider-connection-credential>

Tools: `replace_provider_connection_credential`

## A decision kept in the core area can be read by anyone who holds it

Stable ID: `core-decisions-are-readable`

Any member or agent who can read the core area can now read a decision kept there, including one another agent recorded, and can see recent decisions kept there\. Search finds the person's words and names the key\. Saving a lesson uses the run's process when you leave that out\.

1. Ask your AI to check a decision by its key, or to search for the words the person said\. A decision kept in the core area comes back, including one another agent recorded\.

Documentation: <https://mainmind.app/docs/releases>, <https://mainmind.app/docs/decisions>, <https://mainmind.app/docs/mcp-tools>

Tools: `decisions`, `search`, `deposit_lesson`

## An owner can seal any account from the environment, or on Accounts

Stable ID: `agent-seals-account-secrets`

An owner or co\-owner, and an assistant on that same role, can create an account and fill in its secrets from the machine's environment, without putting those secrets in the chat\. The same person can press Connect or Replace values on the Accounts screen, including an account that is still pending and keys a tool keeps by name\. The values go into the store and are not shown back\. The assistant posts them to one address and sends a short\-lived key in a header, not in the address or the body\.

1. On Accounts, an owner or co\-owner presses Connect on an account that is not connected yet, including keys a tool keeps by name\. Once it is connected, press Replace key or Replace values\. The values go into the store\. Nobody can read them back, and no tool receives named keys\.
2. To create an account without the secrets in the chat, call install\_provider\_connection with request\_seal\_link true and no credential\. Only an owner or co\-owner can, the same people who use Connect and Replace values\. Post one JSON object of the field names to seal\_url with the header X\-Mainmind\-Seal\-Key set to seal\_key\. The key is not in the address or the body\. The answer names each stored field's byte length and SHA\-256, and not the value\. Compare those with the files before using the account\.
3. To replace secrets the same way, call replace\_provider\_connection\_credential with request\_reseal\_link true, the alias, and the current credential generation\. For an account that is still pending, omit the generation\. Post the values the same way\. The answer names each stored field's byte length and SHA\-256, and not the value\.

Documentation: <https://mainmind.app/docs/mcp-tools#install-provider-connection>, <https://mainmind.app/docs/mcp-tools#replace-provider-connection-credential>

Tools: `install_provider_connection`, `replace_provider_connection_credential`

## Sign in with Zoho

Stable ID: `sign-in-with-zoho`

Connect Zoho Expense, Books, Inventory or Desk with one button\. You approve Zoho in the browser, and Mainmind stores the login\.

1. Open the Zoho page Mainmind gave you and press Sign in with Zoho\.

Documentation: <https://mainmind.app/docs/using-the-api#sign-in-with-zoho>

## The app downloads about 50 KB less before it shows anything

Stable ID: `the-app-opens-lighter`

The app used to download the code for Accounts before it could show any page, even when you never opened Accounts\. That code now loads the first time you open Accounts\. Accounts looks and works the same as before\. Every other page has about 50 KB less to download before it appears\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Pages and connected apps load faster from far away

Stable ID: `app-runs-next-to-its-database`

Pages and connected apps load faster from far away: the app now always runs next to its database, instead of only when traffic patterns favoured it\. Before, someone far from the database whose traffic was light could wait about ten seconds for the app to open, because each of its many lookups crossed the distance separately\. Now that distance is crossed once per request\.

1. Nothing to do\. Pages and connected apps open faster wherever you are\.

Documentation: <https://mainmind.app/docs/releases>

## See how your space is doing

Stable ID: `space-health`

Health shows how many notes are still open, how long the oldest has been waiting, and pages that look out of date, repeated, or replaced while they are still in use\. Once an hour, new questions are gathered into one\. A page is updated from a yes you already recorded only when you have turned that on for the space\.

1. Open Health in the app, or ask your agent to read space\_health\.

Documentation: <https://mainmind.app/docs/concepts#space-health>

Tools: `space_health`

## Your agent's calls to your connected accounts now show on its own task

Stable ID: `agent-connection-calls-on-their-task`

When your agent started a task as itself and called one of your connected accounts, the call went through but was missing from that task's record, and a change to the account was refused before it was sent\. Both now work: each read and each change appears on the agent's own task, under the agent's name\. A change from an agent that was removed or replaced since it started the task is still refused before it is sent\.

1. Have your agent pass the same agent, run\_id and control\_key it started the task with when it calls a connected account\.

Documentation: <https://mainmind.app/docs/mcp-tools#call-provider>

Tools: `call_provider`

## Pages open without waiting to check for newer saves

Stable ID: `pages-open-without-waiting-on-the-store`

A page that already shows a space's latest save now opens straight away\. It reads Mainmind's own record of where each save landed instead of asking the store, a check that sometimes took several seconds\. Right after a save, or when Mainmind's record does not match what the page shows, a page still checks as before\.

1. Nothing to do\. Pages open faster and stay as fresh as before\.

Documentation: <https://mainmind.app/docs/releases>

## A change that disagrees with a linked page is not saved

Stable ID: `linked-pages-agree-before-a-change-lands`

Before a change to your space is held, and again before your yes saves it, Mainmind compares the pages it would write with the pages they link to and the pages that link to them\. If a list stops short, a page still names a default that was replaced, or two pages say the opposite about the same point, nothing is saved\. Your agent fixes those pages in the same change and asks you again\.

1. When the pages agree, your yes is saved\. There is nothing extra to do\.
2. If your agent says the change was refused, your space stays as it was\. Wait for your agent to ask again after the pages agree\.

Documentation: <https://mainmind.app/docs/concepts>, <https://mainmind.app/docs/mcp-tools#change>

Tools: `change`, `propose_change`, `decide`

## Your agent's own task keeps its business account calls

Stable ID: `agents-call-accounts-as-themselves`

When your agent starts a task as itself, it can now call a connected business account and report what happened inside that same task, so the whole job is in one record\. It reaches only what a teammate reaches, and never more than you do\. Tool permits and checkouts still need a task you start yourself\.

1. Have your agent pass the same agent it started the task with when it calls a business account or reports an event for that task\.

Documentation: <https://mainmind.app/docs/mcp-tools#call-provider>, <https://mainmind.app/docs/mcp-tools#emit-event>

Tools: `call_provider`, `emit_event`

## Your agent changes a rule or process with one tool, and asks you in the chat

Stable ID: `one-tool-to-change-a-space`

When your agent wants to change one of the space's rules, processes or roles, it now uses one tool, change\. Nothing is saved yet: the change is held with its exact words, and your agent asks you about it in the chat you are already in, with its recommendation\. Nothing waits in the app for your own chat\. When you answer, your agent passes your words back through the same tool: yes saves exactly those words with the Decision recording your answer, and no saves nothing\. If your agent changes its mind about the same files, its new question replaces its old one, so you are asked once\. Its recommendation is said in the chat, never stored, so no switch can treat your silence as agreeing with it\.

1. Ask your agent to change a process or rule; it asks you in the chat with its recommendation\.
2. Answer in your own words; your agent records them and the change is saved, or not, as you said\.

Documentation: <https://mainmind.app/docs/mcp-tools#change>

Tools: `change`

## Review rules accept an inherited model, drop a trigger that pointed nowhere, and one way to change a space is agreed

Stable ID: `review-brief-may-say-model-inherited`

Nothing about using Mainmind changes\. Two rules for how changes to Mainmind itself are reviewed were updated on the Founder's word\. A published review brief may now either name the model that checked the change or say that the model was inherited from the session that asked for the review and where that session records it; in that case whether the reviewer was strong enough is checked from that session's record rather than from the repository alone\. Reviews written before this change stand as they are\. And the strictest review tier now has two triggers, a governance file or a security boundary: the third pointed at a file of pinned sources that was removed with the old Git service, so it could never apply\. The Founder also agreed that an agent changes a space in one way only, with the question asked in your chat; each later step that changes what an agent may do still goes to him\.

1. Nothing to do\. Your space works as before\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: the checks every change must pass now guard their own list

Stable ID: `build-chain-is-checked`

Every change to Mainmind must pass one long list of checks before it ships\. Until now, nothing noticed if a change quietly removed, reordered or cut that list short; a reviewer had to spot it by eye in one very long line\. The list now checks itself against the version already live, and accepts only checks added on their own\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: an owner tool list must keep the saved\-login retry

Stable ID: `owner-retry-stays-listed`

This changes how Mainmind is checked, not how you use it\. An owner or co\-owner was already offered retry\_provider\_sign\_in\. A check now fails if that offer disappears from the tool list those roles receive\. What your AI app is sent for every tool is exactly the same as before\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `retry_provider_sign_in`

## Maintenance: a build check runs on a machine with no saved name

Stable ID: `build-test-supplies-its-own-author`

One build check makes a throwaway commit to test what happens when two saves race\. It now supplies its own author name instead of expecting the machine to have one saved, so the check passes wherever the release is built\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Mainmind keeps its own record of every save

Stable ID: `mainmind-records-every-save`

Every time Mainmind saves to a space, it now also writes down where that save landed, and refuses to save if it cannot\. Pages do not use that record yet and still check for newer saves as before\. A following release will let a page that already shows the latest save open without that check, which sometimes takes several seconds\.

1. Nothing to do\. Saving and opening pages work as before\.

Documentation: <https://mainmind.app/docs/releases>

## An owner agent can retry a saved login and replace a secret without typing it

Stable ID: `mcp-sign-in-retry-and-reseal`

When an account has stopped because its login was refused, an owner or co\-owner's assistant can try the password already stored\. When that password works, the next call goes through\. To put in a new password or API key, the assistant asks for a link and a shell posts the values to that link from the environment\. The values do not go through the chat or a tool argument\. The link lasts ten minutes and works once\.

1. To try the saved login, call retry\_provider\_sign\_in with the account's alias\. Only an owner or co\-owner can\. A success means the next call\_provider can use that account\.
2. To replace a password or API key, call replace\_provider\_connection\_credential with request\_reseal\_link true, the alias and the current credential generation, and no credential\. Post one JSON object to the returned link\. Use the names the account already uses, such as SHIPROCKET\_PASSWORD or api\_key\.

Documentation: <https://mainmind.app/docs/using-the-api#move-an-account-off-secret-slots>, <https://mainmind.app/docs/mcp-tools#retry-provider-sign-in>, <https://mainmind.app/docs/mcp-tools#replace-provider-connection-credential>

Tools: `retry_provider_sign_in`, `replace_provider_connection_credential`, `call_provider`

## More reading tools check your access again before they answer

Stable ID: `reading-tools-check-before-answering`

Eight tools that show your space's documents now check once more, just before they answer, that your access was not removed and that the space's knowledge did not change while they were reading\. They are start, read\_node, find\_process, list\_notes, page\_history, export\_agent\_team, what\_points\_here and explain\_node\. explain\_node checks when it explains a document to you; when you give it your own explanation or drop its saved views, it saves something, so it answers as other saving tools do\. Before, these tools could show a page from just before a newer version arrived, or show it to someone whose access had just been removed\. Now, when that happens, you see a short message asking you to try again instead of the old page\. Trying again a moment later gives you the current page\. Tools that save something are not changed: once a save has happened, its answer is always given\.

1. If a tool asks you to try again because the space changed while it was reading, ask again\. The next answer shows the current page\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `start`, `read_node`, `find_process`, `list_notes`, `page_history`, `export_agent_team`, `what_points_here`, `explain_node`

## Maintenance: tests now use the same tool setup Mainmind uses

Stable ID: `tool-setup-tested-directly`

This changes how Mainmind is built, not how you use it\. The step that offers each tool to your AI app, with its name, description and the details it asks for, now lives in one place that the tests call directly\. Before, the tests copied that step out of Mainmind's code as text and ran the copy\. What your AI app sees for every tool is exactly the same as before\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: each reading tool says whether its answer is checked again

Stable ID: `tool-answer-check-chosen`

This changes how Mainmind is built, not how you use it\. Some tools check once more, just before they answer, that your access and the space's knowledge did not change while they were reading\. Every tool that only reads your space's knowledge now says whether it takes that last check, and a new tool that does not say cannot be shipped\. Before, a tool that forgot to ask for the check went without it\. No tool's behaviour changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## A design record for seeing which space answered

Stable ID: `space-switch-design-record`

This changes how Mainmind is built, not how you use it\. A new design record proposes how every conversation on one connection will be able to see which space answered it, because switching spaces in one conversation moves every other conversation on the same connection\. Nothing is built yet\.

1. Nothing changes in how you use Mainmind\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: one place now runs every tool

Stable ID: `tool-call-module`

This is an internal change\. The steps around each tool, such as checking who you are, checking your access and keeping a record in the task, now run from one place, and each tool says which of those steps it needs where it is defined\. Before, some of those steps were chosen by looking up the tool's name in several lists\. No change to how any tool behaves\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Your space's sidebar shows the plan, each request's own title, and only real page changes

Stable ID: `sidebar-shows-plan-and-request-title`

In the app that opens your space beside a chat, saved progress now shows the plan an agent saved, not only what is still to do\. Each request is titled by its own first line, with the page it is on after it\. A request is marked "source changed" only when its page has actually changed since it was asked, not every time anything in the space is saved\.

1. Ask your AI to open Mainmind, then open a request's saved progress to see its plan\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `open_mainmind`

## An app still using a login from before the renewal repair is reported once a day

Stable ID: `legacy-login-refusal-logged-once`

An AI app that keeps sending a login made before the renewal repair is still told to connect Mainmind again, with the same message\. Mainmind's error log now records it once a day per login instead of every time, so a new sign\-in problem is not hidden among the repeats\.

1. If your AI app says the connection predates the login\-renewal repair, connect Mainmind again in that app\.

Documentation: <https://mainmind.app/docs/releases>

## See which permissions a saved login was given

Stable ID: `accounts-show-granted-permissions`

A Zoho Desk login could go for days without the permission it needed for chats, and nothing showed it until a task failed halfway\. Now, whenever Zoho or another service tells Mainmind which permissions a login was given, Mainmind keeps that list and shows it with the account, along with when it was last seen\. When the service does not say, the list reads not reported by the provider, and Mainmind does not guess\. When a service refuses a call because the login lacks a permission, the answer now says so in plain words: the saved login is missing a permission, and an owner needs to sign in again and grant it, for Zoho by pasting a new Zoho code or using a grant link\. The service's own answer is still passed on unchanged\.

1. Ask your AI to list your provider connections and check granted\_scopes for each account\.
2. If a call says scope\_missing, an owner signs in to that service again, grants the missing permission, and pastes the new Zoho code on the Accounts screen or uses a grant link\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `list_provider_connections`, `call_provider`

## A refused call now says who refused it

Stable ID: `refusals-say-who-refused`

A run receipt used to list a refused call with only the word refused, so nobody could tell whether Amazon, Zoho or Shopify said no, or Mainmind stopped the call first\. Now it says, for example, refused by Amazon \(HTTP 403\), or refused by Mainmind\. When Mainmind stops a call over the account or its login, the error also says what kind of problem it is: too many requests \(with how long to wait\), a login that no longer works, missing permission, or the account's service being down, along with the status the service itself gave\. A Zoho link made for a Connection now names that Connection, a link that fails after saving says the login was already replaced, and a code that came back without a lasting login is no longer called a refusal\.

1. Nothing to do\. Read the run receipt or the call's error as before; the new words are added beside the old ones\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `call_provider`, `run_receipt`

## Amazon product type definitions come back with their rules

Stable ID: `amazon-product-type-schemas-arrive`

When your AI asks Amazon what a product type needs, such as which details a luggage listing must have, Amazon answers with a link to the full list of rules\. Mainmind used to stop that answer\. It now hands your AI a short\-lived Mainmind link to the rules instead, the same way it hands over Amazon reports, so Amazon's private download link never leaves Mainmind\.

1. Ask your AI to look up an Amazon product type, then read the rules through the link it gets back\.

Documentation: <https://mainmind.app/docs/mcp-tools#call-provider>

Tools: `call_provider`

## A task always shows for the agent it is addressed to

Stable ID: `work-cards-stay-with-their-recipient`

If someone changed who a task was for while Mainmind was being updated, the new person could miss it until the task was saved again\. Now the task shows for whoever it is addressed to\. If Mainmind once failed to set up the faster Team page read, it now tries again, so that page stays quick\.

1. Nothing to do\. Open Team, and each agent's tasks are there as before\.

Documentation: <https://mainmind.app/docs/releases>

## A new space shows how to connect your AI app before the setup prompt

Stable ID: `connect-your-ai-app-first`

A brand\-new space used to lead with Copy setup prompt, which does nothing until your AI app is connected to Mainmind\. Its Next step now shows two steps in order\. First, connect your AI app: pick it, copy one link and sign in with GitHub\. Then copy the setup prompt into that app\. The Connect your AI page now has its own ChatGPT tab, so you no longer have to guess Something else\.

1. Open Home in a new space and tap Connect your AI app\.
2. On Connect your AI, tap ChatGPT or Grok, copy the link and follow the one line under it\.

Documentation: <https://mainmind.app/docs/index>

## Search says plainly which results hold your words

Stable ID: `search-says-what-it-checked`

Search and Oracle now mark the results that hold your words as written, and explain the mark in the same words: the words may be anywhere in the page, its title or path, and capital letters and line breaks are ignored\. Other pages may still mention them, because search ranks results rather than listing every page\. A search for one very long word no longer fails when search is running in its slower backup mode\. When Oracle could not record your answer for a known reason, it now says nothing was recorded and lets you answer again, or tells you someone already answered the question\. Tool descriptions that pointed everyone at an owner\-only tool now say that the owner uses it\.

1. Ask your AI to search your space for a phrase or an order number\. It can tell you which results hold those exact words\.

Documentation: <https://mainmind.app/docs/releases>, <https://mainmind.app/docs/mcp-tools>

Tools: `search`, `whoami`, `start`, `decisions`, `ask_founder`

## Pages open without waiting on every agent

Stable ID: `your-call-reads-agents-at-once`

Opening a page in the app no longer reads each agent's whole work list to find what they are waiting on you for\. One quick read now answers for all your agents, so Your call fills in sooner and other pages are not held up behind it\.

1. Nothing to do\. Your call still lists every agent's questions, and each agent's page still shows its full work\.

Documentation: <https://mainmind.app/docs/http-api>

## Maintenance: the release check says what it checked

Stable ID: `the-release-check-says-what-it-checked`

Nothing changes for you\. Inside the project, the check that validates release notes no longer reports a pass when it had no base to compare against, so a build log says which checks it actually ran\. The rule for whether a note names a tool that still exists is now written once instead of twice, an old tool name can no longer share a batch with a space switch, and the contributor guide says how dependency locks are resolved and verified\.

1. No setup change is needed\. This is project machinery and contributor guidance, not the running product\.

Documentation: <https://mainmind.app/docs/releases>

## Retire a question you asked

Stable ID: `retire-your-own-pending-question`

When a question you asked is no longer the one to answer, you can retire it\. The owner is not asked to decline it\. A new question that touches the same files says so, and the question in the chat is a plain yes or no\.

1. Retire your own pending question, or replace it when you ask again\. The owner still decides every question that stays open\.

Documentation: <https://mainmind.app/docs/concepts#decisions>

Tools: `propose_change`, `ask_founder`, `withdraw_ask`, `decide`, `decisions`

## Questions asked in your chat stay in your chat

Stable ID: `questions-asked-in-chat-stay-in-chat`

When an agent asks you for a yes in your own chat, the question stays there\. It is no longer added to Your call in the app as something waiting, and the 7\-day default never takes your silence there as a yes\. If you leave it, the agent can ask again next time you talk\. A teammate's change that only you can approve still shows in the app\.

1. Answer the agent in the chat, by tapping Yes, No or Change it, or by typing your answer\.

Documentation: <https://mainmind.app/docs/decisions>

## A sign\-in refusal says what the account answered

Stable ID: `sign-in-login-is-not-stopped-by-a-busy-login`

A sign\-in account keeps one login token until it expires, or for ten days when the login does not say\. The password is sent exactly as it was saved\. A busy, down or unreachable login is tried once more and does not stop the account\. A login that answers 401 or 403 stops the account, unless that answer says the problem is the token\. Accounts shows that status, a short message, and when a login last succeeded\.

1. On Accounts, open the account and press Try the saved login\. That uses the password already stored, once\.
2. If the account still refuses it, press Replace values and enter the current password\.
3. A busy or unreachable login does not stop the account\. A login that answers 401 or 403 stops it, unless that answer says the problem is the token\. Details lists recent logins and calls, without the password or token\.

Documentation: <https://mainmind.app/docs/using-the-api>

Tools: `list_provider_connections`, `call_provider`

## A Zoho code is checked before it replaces the saved login

Stable ID: `zoho-code-keeps-the-old-login`

Pasting a Zoho one\-time code now checks it with Zoho before the saved login changes\. A code Zoho refuses leaves the previous login in place\. Access tokens are shared until they are about to expire, so a burst of calls does not ask Zoho for a new token every time\.

1. On Accounts, open Zoho Desk or Zoho Inventory and choose Paste Zoho code\. Generate a code in Zoho's API console \(Self Client\) after the dialog is open, then paste it\.
2. Or ask your AI for a link, open it, and paste the code there\. The code does not go through the chat\.

Documentation: <https://mainmind.app/docs/using-the-api>

Tools: `replace_provider_connection_credential`, `list_provider_connections`

## Accounts is one short list, and saving closes the dialog

Stable ID: `accounts-one-short-list`

Accounts now opens on its own list instead of waiting behind the rest of the app, and it no longer shows another space's accounts while the new one loads\. Each account is one row with its letter, its name and a dot for how it is doing\. Accounts that need you come first and open with what to do; working ones stay closed until tapped\. Connecting an AI app, Copy to GitHub, downloading everything and your account sit together under More\. Saving new values or adding an account now closes the dialog and says Saved above the list\.

1. Open Accounts and tap an account to replace its values or remove it\.
2. Tap More, then Connect your AI app, for the setup prompt and the connection address\.

Documentation: <https://mainmind.app/docs/using-the-api#get-a-new-refresh-token>

## A refused start names the right seat and the space it searched

Stable ID: `agents-told-which-seat-and-space`

An agent that starts with both an agent and a seat that do not fit is now told why the seat did not fit and which seat that agent holds, instead of a bare mismatch\. An agent that is not in the space the connection is serving is now told which space was searched\. If the connection holds more than one space, another session on it may have switched it, and the agent can switch back with use\_organization\.

1. If start refuses a seat, pass the seat it names, or start with the agent alone\.
2. If start or sync says an agent is not in a space, call use\_organization with no argument to see the spaces this connection holds, switch to the agent's own space, and start again\.

Documentation: <https://mainmind.app/docs/mcp-tools#start>

Tools: `start`, `sync`, `use_organization`

## Find and create pages from the menu

Stable ID: `find-and-create-pages`

Pages has its own place in the menu, even when Home is your only page\. Create a document with a title, then edit and save it as you work\. Embedded sections explain when they need an agent to update them\.

1. Open Pages in the menu to see the pages in your space\.
2. Choose New page, enter a title, then choose Create page\. Open Edit page to start writing\.
3. If creation is interrupted, choose Retry to check the same page\.

Documentation: <https://mainmind.app/docs/mcp-tools#keep_page>

Tools: `keep_page`

## Live voice runs on the current Agents release

Stable ID: `live-voice-current-agents`

Talking to Oracle works as before\. Its live voice now runs on the current Cloudflare Agents release\.

1. Use the microphone in Oracle as usual\. Starting, interrupting and ending a call have not changed\.

Documentation: <https://mainmind.app/docs/oracle>

## Agents are told to read the current guide again

Stable ID: `agents-return-to-current-docs`

When an agent connects or starts work, Mainmind now points it to the same guide and asks it to read the relevant page again after a release or when something behaves differently than it expected\. A link to the guide in your space no longer hides that reminder\. Your space's own authority and processes still decide what an agent may do\.

1. Nothing to do\. If an agent seems out of date, ask it to read the relevant Mainmind guide again\.

Documentation: <https://mainmind.app/docs/index>

Tools: `start`

## A newer update to your knowledge takes over at once

Stable ID: `newer-sync-takes-over-at-once`

When something new landed in your space while an older update was still running, the older one kept trying for about two and a half minutes before giving up as a failure, and could hold up the newer one\. It now steps aside on its first try and lets the newer update finish, so your knowledge catches up sooner\. Real failures are still retried as before\.

1. Land two changes close together\. Your knowledge shows the newer one without a wait or a failed update\.

Documentation: <https://mainmind.app/docs/releases>

## Review records name changes anyone can check

Stable ID: `review-records-name-real-heads`

This changes how Mainmind is built, not how you use it\. Before a review of a change is kept on record, a check now confirms that every version the review names still exists, so a later check can see exactly what was reviewed\.

1. Nothing changes in how you use Mainmind\.

Documentation: <https://mainmind.app/docs/releases>

## Mainmind's own checks read the real answers your AI gets

Stable ID: `mount-parity-uses-production-handlers`

Before a change ships, Mainmind compares how well an AI works through your connection against a copy of your space's files\. That comparison used to run against a stand\-in that answered differently from the real connection and left out the work list, so a result could say more about the stand\-in than about Mainmind\. It now runs on the same code that answers your AI\.

1. Nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## New agents are made from your own AI app

Stable ID: `new-agents-join-through-their-owner`

A new agent now joins through the person it works for: you make it from your own AI app, signed in as you, and it works with what you can reach\. Mainmind no longer makes a new bot with its own key\. If an AI asks for one, it is told to make the agent from its owner's app instead\. Agents that already have a key keep working, and you can still replace that key or retire them\.

1. In your AI app, connected to Mainmind as you, say "make me an agent that…" and describe its job\.

Documentation: <https://mainmind.app/docs/persistent-agents>

Tools: `invite_member`, `register_agent`

## Helpers for building this product are picked from a current comparison

Stable ID: `helper-model-follows-the-current-comparison`

This changes how Mainmind is built, not how you use it\. Picking a helper to work on this product starts from a current public comparison of cost per finished task, read once per session and reused while the available models and settings stay the same\. Where no comparison page is named, one bounded read of a current independent comparison is made\. A note saved on an earlier day does not make the choice\.

1. No action\. How you use Mainmind is unchanged\.

Documentation: <https://mainmind.app/docs/releases>

## Mainmind checks for an unfinished release without a shared browser

Stable ID: `release-check-reads-the-build-queue`

Before one change to Mainmind ships, the last one has to finish going out\. Checking that used to need someone's signed\-in browser, so it waited whenever that browser was busy with other checks\. Mainmind's tooling now reads the release queue directly\. It only reads: it cannot start, retry or stop a release\.

1. Nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Problems found while building reach the fix queue

Stable ID: `builder-findings-reach-the-issue-queue`

This changes how Mainmind is built, not how you use it\. When a build turns up a problem in how Mainmind is made, one command now files it with the issue already open for that cause, or opens one, and keeps the report safe if it cannot be filed yet\.

1. Nothing changes in how you use Mainmind\.

Documentation: <https://mainmind.app/docs/releases>

## Oracle is a simple chat that fits your phone

Stable ID: `oracle-chat-made-for-phones`

Oracle now opens a fresh chat with the box pinned to the bottom of the screen\. While it works you see one line that shows how long it has been reading, and Send turns into Stop\. Earlier chats, sources and settings open in a panel from the bottom of the screen\.

1. Open Oracle and type your question\. To go back to an earlier chat, tap the clock at the top\.

Documentation: <https://mainmind.app/docs/oracle>

## A timing test no longer stops a release

Stable ID: `a-timing-test-stops-failing-deploys`

Nothing about using Mainmind changes\. Internally, one of the tests that runs before every release checks that a saved\-file read which never answers is given up on and tried again\. It proved that by allowing only 20 milliseconds, but the same 20 milliseconds also applied to the read that was meant to succeed, so on a busy machine that read was given up on too and the test failed\. Because this test runs inside the release build, a failure stopped the release rather than just the change that triggered it, and it blamed whichever change happened to be next\. It failed twice in one day on two different machines\. The test now decides for itself when the clock runs out for the reads it wants to abandon, and leaves the read that has to succeed the full time the live service allows, so the dependence on how busy the machine is that failed twice today is gone\. One check on how long the whole thing took is still there, to catch the clock never being reached at all; it leaves the work far more room than the twenty milliseconds that failed\.

1. Nothing to do\. Your space works as before\.

Documentation: <https://mainmind.app/docs/releases>

## How changes are recorded before they ship

Stable ID: `review-record-names-the-merged-commit`

Nothing about using Mainmind changes\. Internally, the record a change carries has to name the exact version of the code that was tested and reviewed\. That record was written once when work started and left alone as the work moved on, so on one day five changes reached the point of shipping with records naming a different version from the one being shipped\. Four were caught by hand at the last moment and one was not\. The guide and the checklist now say to rewrite the record each time the work moves\. The check that produces the evidence now refuses to run unless it is running the same version of the tools the live service runs; nobody was checking that, and it is how two of those five records came to name the wrong version\.

1. Nothing to do\. Your space works as before\.

Documentation: <https://mainmind.app/docs/releases>

## Home opens sooner and fills in card by card

Stable ID: `home-paints-card-by-card`

Home used to wait for its slowest read before showing anything, so one slow answer held the whole page on "Reading your space"\. Each card now appears as soon as its own answer arrives, and the page starts asking for them while it is still loading\. A card that cannot be read says so on that card, and the rest of Home still shows\.

1. Open Home as usual\. What is waiting on you shows first; slower cards, such as repository links, fill in after\.

Documentation: <https://mainmind.app/docs/releases>

## You can change any agent's job on Team

Stable ID: `team-edits-every-agents-job`

Agents that work through a person's account, including the Librarian and the Toolsmith, used to show no way to change what they're for\. Each one now has an Edit responsibility button\. Only the job changes: what the agent can reach still comes from the person it works for\.

1. Open Team, open an agent, and choose Edit responsibility under Responsibility\.

Documentation: <https://mainmind.app/docs/releases>

## Pages open at once when the check on your space is slow

Stable ID: `pages-open-from-last-check`

Before Home, Knowledge or Team shows your space, Mainmind checks it is up to date with your repository\. That check is usually instant, but about one time in twenty it takes seconds, and pages used to wait up to two and a half seconds for it, sometimes long enough for Team not to load\. Now, when the same version was confirmed in the last five minutes, the page opens from it straight away and the check finishes in the background\. A change pushed a few seconds earlier may then appear on your next refresh instead of this one\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Oracle keeps checking for your answer when your connection drops

Stable ID: `oracle-wait-survives-a-dropped-check`

If your phone sleeps or loses a request while Oracle is answering, Oracle keeps checking instead of showing a question stuck in the queue forever\. It shows how long you have waited and tells you when it cannot get an update\.

1. Leave the page or lock your phone while Oracle answers\. When you come back, it checks again straight away and shows the answer once it is ready\.

Documentation: <https://mainmind.app/docs/oracle>

## Home, Knowledge and Team wait on fewer database trips

Stable ID: `pages-prove-freshness-once`

Before a page shows your space, Mainmind checks it is current with your repository\. Each of the reads a page opens with used to make that check on its own, in up to fourteen trips to the database\. Reads that open together now share one check, which takes three trips\. Home's opening reads take about 10 trips instead of 63, and Knowledge's about 18 instead of 127\. Nothing older is shown, and a read that a new publication overtakes is still refused rather than mixed\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Groundwork for moving the built\-in accounts

Stable ID: `built-in-accounts-ready-to-move`

This is internal groundwork, and nothing changes for you yet\. Mainmind can now describe its built\-in Zoho, Shopify and Amazon accounts the way it describes every other account, with the same addresses, the same names and the same rule that only the space's owner and co\-owners use them\. Your built\-in accounts are still served exactly as before, and none was copied or moved\.

1. Nothing to do\. Your built\-in Zoho, Shopify and Amazon accounts keep working as they are\.

Documentation: <https://mainmind.app/docs/releases>

## Your repository's status on Home no longer waits for GitHub

Stable ID: `repository-card-reads-mainmind-only`

GitHub keeps a backup copy of your space, yet Home and Accounts asked GitHub who owns the repository and where its copy stood every time they showed its status\. They now read only what Mainmind recorded: who is the space's Founder, and when it last copied to GitHub, which version, and whether GitHub took it\. The status shows the same words as before\. Connecting a repository, Sync now and /start still check with GitHub\. If someone pushes to GitHub directly and GitHub's notice of that push is lost, the status keeps saying GitHub has everything until Mainmind's next copy to GitHub, within the hour\.

1. Open Home or Accounts\. Your repository's line says whether GitHub has everything in your space\.

Documentation: <https://mainmind.app/docs/releases>

## Your GitHub repository's status loads faster

Stable ID: `repository-card-loads-faster`

Home and Accounts asked GitHub the same two questions every minute before showing whether your space and its GitHub copy are up to date\. Mainmind now asks both at once and reuses the answer for a few minutes, so the status usually shows straight away\. Connecting or removing a repository still shows on the next refresh, and Sync now always checks GitHub again\.

1. Open Accounts\. Your repository's line shows whether GitHub has everything in your space\.

Documentation: <https://mainmind.app/docs/releases>

## What changed reads plainly, in your agents' colours

Stable ID: `what-changed-reads-plainly`

When an agent syncs, the pages it keeps about itself now show as one line, such as "Chief of Staff updated its own skills \(33 pages\)"\. Tap the line to see the pages\. Each change now has a short line saying what happened, such as "Changed twice"\. Each agent's badge and count are in its own colour\. Where\-it\-stopped notes and plugins now have readable names instead of file names\. Your AI gets the same list when it asks what changed\.

1. Open Home and look under "Since you last looked"\. Tap an agent's sync to see the pages it updated\.
2. Ask your AI: "What changed in my space today?"

Documentation: <https://mainmind.app/docs/mcp-tools#what-changed>

Tools: `what_changed`

## Upgrading an older Mainmind database keeps every page field

Stable ID: `old-databases-keep-page-fields`

A Mainmind database from before spaces existed lost one field about each page when it was upgraded, and saving knowledge would then fail\. The upgrade now keeps it\. A new database is also set up in one pass, so it is ready sooner\.

1. Nothing to do\. Your space works as before\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: browser build checks no longer fail on a busy machine after passing

Stable ID: `browser-checks-wait-for-chrome-helpers`

On a busy machine, a browser build check could pass every check and then fail anyway\. It removed Chrome's temporary profile while Chrome's helper processes were still writing to it\. Cleanup now waits for those helpers to exit, then removes the profile\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Sign\-in moved to a stricter version

Stable ID: `sign-in-library-upgrade`

Mainmind's sign\-in now runs on a newer, stricter version of the code that checks who you are\. Most AI apps keep working with nothing to do, including ones connected at www\.mainmind\.app\. A few are asked to sign in once more: apps connected with a space's own address \(mainmind\.app/mcp/ and a space name\), apps connected with mainmind\.app/mcp/ ending in a slash, and apps that connected with just mainmind\.app\. Sign in again at the same address; the new connection reaches the same space or spaces as before\. An app that connected with just mainmind\.app signs in at mainmind\.app/mcp instead\. An app that registered itself with an http address other than one on your own computer must register again\. A connection made at a space's own address still reaches that one space only\.

1. If your AI app asks you to sign in to Mainmind again, sign in at the same Mainmind address it already uses\. If that address is just mainmind\.app, use mainmind\.app/mcp\.
2. If an app you registered yourself is refused, register it again with an https return address, or an http one on localhost\.
3. Ask your AI: which Mainmind spaces can you see?

Documentation: <https://mainmind.app/docs/using-the-api>, <https://mainmind.app/docs/getting-started>

Tools: `use_organization`

## You can take on work an agent addressed to "founder"

Stable ID: `founder-takes-founder-requests`

When an agent sends a request to "founder", you can now pick it up and work on it from your own connection\. Before, it was refused\. Also, agent\_home and agent\_session go away on 3 November 2026: sync does the same job\.

1. Ask your AI to pick up a request an agent sent to "founder"\. It claims it and works on it as you\.
2. If an agent of yours still calls agent\_home or agent\_session, ask it to use sync instead before 3 November 2026\.

Documentation: <https://mainmind.app/docs/persistent-agents>

Tools: `work_session`, `sync`, `agent_home`, `agent_session`

## Maintenance: every tool now states its own safety checks

Stable ID: `tool-admission-declared`

Before a tool runs, Mainmind checks that it is reading your current knowledge and, for a change, keeps a record of it in the task\. Which tools got which checks used to sit in separate lists, so a tool left off a list could skip a check without anyone noticing\. That once let a tool answer from out\-of\-date knowledge\. Now each tool states its checks where it is defined, and a tool that states none cannot ship\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## What your agent just synced shows in its home as its own

Stable ID: `own-task-trusted-again`

When a sync changed something the agent already kept, such as marking a task done, updating a memory or changing its profile, the home that sync sent back listed those files as written by someone else and left them out\. A task updated in that sync was missing from its tasks until the next sync\. Now the home a sync sends back shows what it just saved, as the agent's own\. A file someone else changed is still left out\.

1. Nothing to do\. Keep syncing as before\.

Documentation: <https://mainmind.app/docs/persistent-agents>, <https://mainmind.app/docs/releases>

Tools: `sync`

## Search says which results contain your exact words

Stable ID: `search-says-what-matches-exactly`

Search now marks which results contain your exact words, and says how many do\. When a search finds results, it also says other pages may still mention them\.

1. Ask your AI to search your space for a name or a phrase\. It tells you which results contain it exactly and which are only related\.

Documentation: <https://mainmind.app/docs/mcp-tools#search>

Tools: `search`

## Edit Home and pages as documents

Stable ID: `edit-pages-as-documents`

Home and the pages in your space now have a continuous document layout\. Edit text, lists, checklists and callouts; choose retained images and MP4 video from Knowledge; and edit bar or line charts through their data tables\. Changes save as you work\. If someone else changes the page first, your earlier draft stays available beside the latest version for manual copy\.

1. Open Home or a page in its menu, then choose Edit page\.
2. Add a block in Edit page\. Describe images, add a transcript for video, or enter chart labels and values\. Wait for Synced before leaving\.
3. Ask your agent to create a page or update a part of an existing page\. Each save uses the version the author read\.

Documentation: <https://mainmind.app/docs/mcp-tools#keep_page>

Tools: `keep_page`

## Release notes keep publishing after a tool is renamed

Stable ID: `release-notes-publish-after-a-tool-rename`

When a tool gets a new name, the list of what changed keeps publishing instead of stopping\. Nothing changes in how you use Mainmind\.

1. Ask your AI for Mainmind's release notes\. The list is current again, including the changes that shipped while it was stuck\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `release_notes`

## See what changed since you were last here

Stable ID: `what-changed`

Home now shows who changed which pages since you last looked: how many by you and by each of your agents, then each page, newest first, one tap from opening it\. Your AI can ask the same question, for any time you name\.

1. Open Home and look under "Since you last looked"\.
2. Ask your AI: "What changed in my space since yesterday afternoon?"

Documentation: <https://mainmind.app/docs/mcp-tools#what-changed>

Tools: `what_changed`

## Stopping a reply now tells you if your answer went through

Stable ID: `oracle-stopped-answer-status`

When you stop Oracle while it records your answer to a question, it now says whether the answer was saved, was not saved, or could not be confirmed\. Stopping the reply does not undo an answer already saved\.

1. If a stopped reply says your answer may have gone through, tap Check my answer before answering again\. If it still cannot confirm it, look at the question in Your call\.

Documentation: <https://mainmind.app/docs/oracle>

## Start with Mainmind

Stable ID: `start-with-mainmind`

Your AI now begins work in your space with a step called start, so you can simply tell it to start with Mainmind\. Everything it gets back is the same as before\.

1. Ask your AI to start with Mainmind\. Nothing else is needed first\.
2. Apps that still use the old name, boot, keep working and get the same answer\.

Documentation: <https://mainmind.app/docs/getting-started>, <https://mainmind.app/docs/mcp-tools>

Tools: `start`

## See your space from your AI app

Stable ID: `space-sidebar-app`

AI apps that show plugin pages can open Mainmind from their sidebar to show your team, current work and saved progress\. It only reads: opening it does not start work or record agent activity\. It also says whether what you see is up to date\.

1. Refresh Mainmind in your AI app, then choose Mainmind from its sidebar if your app shows plugin pages\.
2. Choose a work item to see its saved progress: what was done, what is still to do and what needs checking\. This works even when the team or activity list cannot be loaded\.
3. Open Space details to see whether the view is up to date\. It says up to date only when Mainmind has checked; otherwise it says not verified\.
4. If your app has no sidebar entry, ask it to open Mainmind\. You get the same team, work and saved progress as text\.

Documentation: <https://mainmind.app/docs/mcp-tools#open-mainmind>

Tools: `open_mainmind`

## Large approved changes finish landing

Stable ID: `large-rulings-land-whole`

When you approve a change that touches many pages, Mainmind now lands it a few files at a time in the background until all of it is in place, instead of stopping part way\. Your assistant is told the change is still landing\.

1. Approve the change as usual\. Open the decision page to see when it is fully in place; you do not need to press Retry\.

Documentation: <https://mainmind.app/docs/decisions>

Tools: `decide`

## A large first checkout answers on the first call

Stable ID: `member-checkout-background-from-first-call`

The first checkout of a space with many files used to spend several calls of about 45 seconds each before it started preparing the files in the background\. Now the first call starts that right away and answers with how many files are ready, and a call that runs out of time starts it too\. Later calls look briefly, answer with progress, and hand over the checkout once every file is ready\. If preparing the files is refused, for example because a file is too large, the next call says why instead of only counting files\.

1. Call checkout\_member\_repo as before\. If it says the rest of the files are being prepared, call it again in a minute, in the same task\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `checkout_member_repo`

## Correct a record you already saved

Stable ID: `amend-saved-record`

An agent or person working only in chat can now correct a record they saved\. Read the record, then save it again with the version you read\. It is saved only if nobody changed it since, and only by the person or agent that saved that version\. It keeps its date and Process, and the earlier version stays in the page's history\.

1. Read the record with read\_node and note the sha it shows\.
2. Call deposit\_record with the same kind and slug, the whole corrected record, and base\_sha set to that sha\.
3. If the record changed since you read it, nothing is saved: read it again and retry\. Use page\_history to see the earlier version\.

Documentation: <https://mainmind.app/docs/mcp-tools>

Tools: `deposit_record`, `read_node`, `page_history`

## Saves and refusals say what happens next

Stable ID: `clearer-waits-and-routes`

A save now says its knowledge refresh should start in the background and usually shows within 30 seconds, instead of saying the refresh was not confirmed\. A read refused as out of date says how long to wait\. A Record or work note that already exists names the ways that work: a new dated one, a kept page, or the owner editing it directly\. An old GitHub pull\-request question reads as retired instead of waiting, and is never offered to decide\.

1. Nothing to do\. If a read says knowledge is out of date, wait about 30 seconds and try again\.

Documentation: <https://mainmind.app/docs/releases>

## Unused checkout copies are cleared, and the GitHub copy catches up

Stable ID: `stale-stages-and-copies`

A member's checkout that ended without being handed over no longer leaves its prepared copy behind for them to fetch: it goes when the checkout ends, and any left from before go the next time their checkout is built\. A save that crossed paths with a GitHub copy retry is now copied to GitHub on the next try instead of being missed until the next save\. An access policy written on one line is refused the same way everywhere, instead of being read as a list in one place\.

1. Nothing to do\. Write access\-scopes in ACCESS\.md as a list, one "\- scope" line each, as every space already does\.

Documentation: <https://mainmind.app/docs/releases>

## The Team page shows each agent's work faster

Stable ID: `team-work-loads-faster`

To show what each agent is doing and what it needs from you, the Team page read every task in your space once per agent\. It now reads only that agent's own tasks, so each agent's work arrives sooner\. What it shows is unchanged\.

1. Open Team\. Each agent's to\-do list and questions for you fill in as before, sooner\.

Documentation: <https://mainmind.app/docs/releases>

## A new space shows how to connect your AI app

Stable ID: `connect-shows-beside-built-in-agents`

Every space comes with the Librarian and the Toolsmith\. Home counted them as agents you had connected, so a brand\-new space never showed how to connect your own AI app\. Home now shows those steps until an agent of your own connects\.

1. Open Home in a new space and follow Connect your first agent\.

Documentation: <https://mainmind.app/docs/first-task>

## One agent's sync holds up the others for less time

Stable ID: `one-sync-one-save`

When an agent syncs, other agents in the same space wait until its save is done\. A sync used to save what was learned, what was forgotten, the tasks and where it stopped one after another, and each save added more waiting\. Now a sync saves all of them together in one step, so the other agents wait less\. If one of them was changed somewhere else, the rest are still saved and the sync says which one to merge\.

1. Nothing to do\. Keep syncing as before\.

Documentation: <https://mainmind.app/docs/releases>

## A task your agent synced shows in its home

Stable ID: `own-task-shows-in-home`

If a sync saved a task but its answer was lost, later syncs that sent the same task said it was saved and unchanged, yet the agent's home listed the task file as written by someone else and left it out of its tasks, every time\. Now a later sync saves that task again as the agent's own, and it shows in the agent's tasks\. A task file someone else wrote, such as a person editing it directly or another agent, is still left out\.

1. Sync the task again, with any key\. It now shows in your agent's tasks\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `sync`, `agent_home`

## A checkout says which tool file it could not send

Stable ID: `checkout-names-unsafe-tools`

When a file under tools/ cannot be sent to a member's machine, such as a link, a submodule, a file over 4 MB or a file listed twice, checkout\_member\_repo no longer refuses the whole checkout\. It gives a knowledge\-only checkout with no tools and says why\. The space's owner sees which files and the reason for each; other members see the reason and that the owner can see which\. When the tool list cannot be read, the checkout asks you to retry instead of calling the tools unsafe\.

1. Run checkout\_member\_repo as usual\. If the result says the view is knowledge\-only, the space's owner fixes or removes the named files under tools/, and the next checkout carries the tools again\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `checkout_member_repo`

## Maintenance: the app page's script is checked before it ships

Stable ID: `app-script-checked-before-it-ships`

The app page's script now lives in its own files, and every change to it is parsed before release\. A typo like a stray quote, which once stopped the whole app page, now stops the release instead\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## A clearer start for agent work

Stable ID: `tool-journey-reads-1291`

Agent guidance now starts with one call, shows the right inputs for finding a process and reading an inbox, and offers a shorter view of recent runs\.

1. Start work with boot; use whoami when you need to diagnose identity or see the full team directory\.
2. Give find\_process an intent, choose page\_work inbox mine for requests, and set list\_runs limit to 5 for a brief overview\. Omit that limit for the usual larger view\.

Documentation: <https://mainmind.app/docs/first-task>, <https://mainmind.app/docs/mcp-tools>

Tools: `boot`, `whoami`, `find_process`, `page_work`, `list_runs`

## Your AI gets Mainmind's key rules in every app

Stable ID: `your-ai-reads-all-of-mainminds-rules`

Some apps, Claude Code among them, read only the first 4,096 characters of what Mainmind tells an AI when it connects, and quietly dropped the rest\. Mainmind now puts the rules that matter most first, so those apps keep them, and the whole guide follows for apps that read it all\. The whole guide also has its own page\. Start here and Sync, the two longest tool descriptions, are shortened the same way\.

1. Connect your AI to Mainmind as usual\. Nothing to change\.

Documentation: <https://mainmind.app/docs/working-guide>

Tools: `boot`, `sync`

## Remove something your agent remembers

Stable ID: `forget-a-memory-in-the-app`

On an agent's page, each thing it remembers now has a Forget button\. Tap it, confirm, and the agent stops remembering it in every app you use it in\. Before, the only way was to tell the agent "forget that" in a chat\. It works the same way: the agent's other memories stay, and the change shows in the space's history as yours\. Only the space's owner can do it\.

1. Open Team, pick an agent, open About, and choose Forget beside the memory you want gone\.

Documentation: <https://mainmind.app/docs/persistent-agents>

## The design record list says which records still hold

Stable ID: `adr-register-says-what-still-steers`

This changes how Mainmind is built, not how you use it\. The list of design records now says, for each one, whether it still describes how Mainmind works, which later record replaced it, or that it is history\.

1. Nothing changes in how you use Mainmind\.

Documentation: <https://mainmind.app/docs/releases>

## Updates stop failing their checks on a busy machine

Stable ID: `checkout-stage-tests-wait-for-the-stage`

One checkout check gave up after a fixed number of steps, so it could fail on a busy build machine even when nothing was wrong, and hold back other updates\. It now waits for the checkout itself, with a time limit\. Nothing changes in the app\.

1. Nothing to do\. Updates reach your space as before\.

Documentation: <https://mainmind.app/docs/releases>

## A run can finish after a saved note's reply was lost

Stable ID: `run-finishes-after-a-lost-reply`

If a work note saved but its answer never reached you, run\_finish used to refuse for good, saying the note's outcome was unknown\. Mainmind now checks whether that exact note was saved in your run, and if it was, the run closes\. If the save cannot be confirmed, run\_finish still refuses, so nothing is closed on a guess\.

1. If a deposit\_work\_note answer is lost, do not save the note again\. Call run\_finish; it closes once the note is confirmed saved in this run\.

Documentation: <https://mainmind.app/docs/releases>

Tools: `run_finish`, `deposit_work_note`

## New skills can use your shared settings

Stable ID: `skill-decision-inherited-defaults`

A new skill that uses your space's shared skill settings can now reach the owner for a decision without repeating those settings in the file\.

1. Ask your AI to propose a new skill as usual\. The owner still reviews the exact change before it is applied\.

Documentation: <https://mainmind.app/docs/knowledge-format>

Tools: `propose_change`

## A new account can't take a built\-in account's name

Stable ID: `built-in-account-names-reserved`

zoho\-inventory, zoho\-desk, shopify\-admin and amazon\-sp are the names your AI already uses for Mainmind's built\-in Zoho, Shopify and Amazon accounts\. Those accounts will move to work like every other account under the same names, so a new account added by your AI can no longer take one of them\. Mainmind says to pick another name, or to connect the built\-in account on the Accounts screen\.

1. Nothing to do\. Accounts you already have keep working, and your built\-in Zoho, Shopify and Amazon accounts are unchanged\.

Documentation: <https://mainmind.app/docs/mcp-tools#install-provider-connection>

Tools: `install_provider_connection`

## Maintenance: the Conversations browser check starts Chrome the shared way

Stable ID: `conversations-check-uses-the-launcher`

The check that scrolls Conversations in a real browser now starts Chrome through the same shared launcher as every other browser check, so the full build passes again\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## The Librarian's counts show what you sent back

Stable ID: `builtin-agent-outcomes-by-version`

On the Librarian's and the Toolsmith's pages, a proposal you answered with Change it now counts as sent back, not as waiting on you\. Each proposal also keeps the version of their instructions that made it, so a proposal made just before a change counts for the version that made it\.

1. Open Team, then the Librarian, then About\.

Documentation: <https://mainmind.app/docs/persistent-agents>

## A checkout answers on time even when its background start is slow

Stable ID: `member-checkout-background-start-bounded`

When a large first checkout runs short of time, it starts reading the rest of the files in the background\. If starting that took long, the call waited for it and could answer late\. Now the call waits only for what is left of its time and then answers\. If the background reading did not start, the next call starts it\. A call also no longer starts a second background reader when it cannot tell whether one is already running\.

1. Nothing to do: call checkout\_member\_repo as before\. If it says the rest of the files are being prepared, call it again in a minute, in the same task\.

Documentation: <https://mainmind.app/docs/releases>

## Scroll within conversations and threads

Stable ID: `conversations-scroll`

Long conversations stay within the screen\. Scroll channel messages and thread replies independently, with thread controls kept in view\.

1. Open Conversations and choose a channel\. Scroll its messages without moving the whole page\.
2. Open a thread to scroll its replies separately\. Close thread stays in view; keyboard Home and End move within the focused message area\.

Documentation: <https://mainmind.app/docs/agent-coordination>

## Clearer next steps when a task cannot be used

Stable ID: `agent-task-recovery`

If a file save or edit cannot use your agent's task, the message now explains how to continue the save, use the right checkout, or check an edit already sent\.

1. Ask your assistant to follow the next step in the message\. For an edit already sent, keep its receipt so your assistant can check what happened before trying again\.

Documentation: <https://mainmind.app/docs/mcp-tools#checkout-change-status>, <https://mainmind.app/docs/mcp-tools#save-source-file>

Tools: `land_scoped_change`, `checkout_change_status`, `save_source_file`, `source_file_upload`, `land_canonical_change`

## Maintenance: the roster note counts rows in plain words

Stable ID: `roster-row-count-reads-right`

When a space's agent\-team page lists people in a table instead of recording them as seats, your AI is told so\. The line used to read "a 11\-row table"\. It now reads "a table of 11 rows" for any number\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## Your AI saves a large file whole instead of a cut\-off copy

Stable ID: `large-files-name-the-download`

Some AI apps cut a long file short when your AI reads it, without saying so\. When your AI opens a large file you saved, Mainmind now tells it the file's full length and how to save the whole file to disk, where it is checked against what you saved\. If a copy comes back incomplete, your AI can now tell\.

1. Ask your AI to open a large file you saved in your space, and to save the whole file to disk\.

Documentation: <https://mainmind.app/docs/source-files#from-a-checkout>

Tools: `read_node`, `source_file_upload`

## Home shows how many things wait on you again

Stable ID: `your-call-counted-on-home`

When you opened the app straight onto Home, the Your call door showed no count, so things waiting on you looked like nothing\. It now counts them on Home as it does everywhere else\. A newcomer whose setup could not be checked is told so again, with a way to try once more\.

1. Open Home\. The number on Your call is what waits on you; open it to answer\.

Documentation: <https://mainmind.app/docs/releases>

## A checkout in a space made in Mainmind gets its lease

Stable ID: `member-checkout-made-in-mainmind`

In a space created in Mainmind rather than connected from GitHub, every checkout\_member\_repo published the member's checkout and then refused it with "membership or knowledge access changed after this checkout was compiled"\. Retries and new tasks failed the same way\. The lease looked for the space's current version only where a GitHub\-connected space records it\. It now also reads it where a space made in Mainmind records it, so the checkout comes back ready to clone\.

1. Nothing to do: call checkout\_member\_repo again in a space made in Mainmind\. A checkout that was published but refused its lease is reused, and this time it comes back with its lease\.

Documentation: <https://mainmind.app/docs/releases>

## The Knowledge title fits its line at large text sizes

Stable ID: `browser-suites-match-the-app`

With text enlarged, the Knowledge title no longer spills above and below its own line, so a title that wraps keeps its lines apart\.

1. Open Knowledge as usual\. Nothing to change\.

Documentation: <https://mainmind.app/docs/releases>

## A large first checkout keeps getting ready between calls

Stable ID: `member-checkout-background-stage`

A member's first checkout of a space with a few thousand files took twelve calls and about seven minutes\. Some calls added nothing, because loading the checkout twice used up the time meant for reading files, and one call had every file ready but still asked to be called again\. Now a checkout that runs short of time keeps reading the rest in the background, so the files keep getting ready between calls\. A call made while that runs waits for the files and publishes the checkout as soon as they are ready\. A call that reads its last file late now publishes instead of asking for another call, and each call spends less of its time on setup\.

1. Nothing to do: call checkout\_member\_repo as before\. If it says the rest of the files are being prepared in the background, call it again in a minute, in the same task\.

Documentation: <https://mainmind.app/docs/releases>

## Maintenance: every browser check starts and stops Chrome the same way

Stable ID: `one-chrome-launcher`

The checks that open Mainmind in a real browser now all start Chrome through one shared launcher\. It keeps them working on a locked\-down test machine, and it waits for Chrome to close before cleaning up\. Nothing about using Mainmind changes\.

1. Keep using Mainmind as usual\. There is nothing to do\.

Documentation: <https://mainmind.app/docs/releases>

## A large first checkout finishes over a few calls, and a stopped one no longer blocks your task

Stable ID: `member-checkout-first-view`

A member's first checkout of a large space could run for minutes without an answer\. It read the space's files one at a time, so the app gave up after 60 seconds\. Every retry then said a prior checkout was being reconciled or that the projection was busy, and run\_finish refused the task\. A checkout now reads many files at once and answers within the minute\. If a first view is too large for one call, the files already prepared are kept, and the answer says how many are ready and asks you to call again; the next call goes on from there\. Nothing is published or left reserved until the view is complete\. The next checkout after a stopped one goes ahead in the same call, and closing a task settles a checkout that never answered once nothing of it can still be published\.

1. Nothing to do: call checkout\_member\_repo as before\. If it says how many files are ready and asks you to call again, call it again in the same task until the checkout is ready\. A task held open by a checkout that never answered can now be finished\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-c06955b73cc066eecb67e6fe`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-f1f5c7623319b5def6e408e6`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-da80a90bc8e370473bb48239`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-0f1c5348659ef8dd76fcaf6a`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-5ceb44f8ec7bd78cd478f6ef`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-9fc5d6a76b54bedb41857e83`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-9005d27daf28aa11b5d57344`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-07b8148257538a5317a7d78b`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-b7449a3288fb078176b3aec0`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-2ccbbce2d1443b6886dc7268`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-55a79b2e572503c23ac2ee07`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-fd9dfe18017ed992bb8ebd71`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-4f01be5c102629c7328a4276`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-b971e12846236538ef38702c`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-a3ca834f4700a713a7597fa6`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Earlier improvements

Stable ID: `earlier-delivered-fixes-2b3eb21a81884001c4112823`

Earlier fixes are included in this version\. Recent updates describe newer changes\.

1. Keep using Mainmind as usual\. Read the current documentation for guidance\.

Documentation: <https://mainmind.app/docs/releases>

## Completed release

Source commit: `df5be887849f8d56f2a82aed49f37e32570d468c`

Worker version: `5a3647c1-85bd-4e65-b009-1d652da91dd1`

Manifest SHA-256: `83a32404510246151bbed866a04cecfc66e4c64a4bb6bbe35c79fd652ab737d7`

Verified at: 2026\-10\-16T22:12:29\.659Z

Release token: `eyJzb3VyY2UiOiJkZjViZTg4Nzg0OWY4ZDU2ZjJhODJhZWQ0OWYzN2UzMjU3MGQ0NjhjIiwidmVyc2lvbiI6IjVhMzY0N2MxLTg1YmQtNGU2NS1iMDA5LTFkNjUyZGE5MWRkMSIsImRpZ2VzdCI6IjgzYTMyNDA0NTEwMjQ2MTUxYmJlZDg2NmEwNGNlY2ZjNjZlNGM2NGE0YmI2YmJlMzVjNzlmZDY1MmFiNzM3ZDcifQ`

On your next check, call release_notes with this token as since. A changed deployment requires a full reread; compare stable IDs and reconcile changed or removed guidance.

