4.23.0 — A cursor cell catches up with the rest of the grid

A snapshot as of 4.23.0 (released 2026-09-14). It will go stale as the app moves on — that is expected, and the living reference is the guide each section links to.

Cursor arrived in 4.22.0 able to run and to report its status, and with three things the other cells had and it did not. This release closes all three: the GUI tools, the token badge, and what the cell just answered — which is what a finished-turn notification quotes and what a handoff carries to another cell.

Nothing here needs configuring except the first one, and that one is a switch you already know.


Give a cursor cell the GUI tools

The Canvas / Workspace data / External accounts switches in an empty cell’s launcher now reach cursor. Before this release they were replaced by a line saying cursor got none.

  1. In an empty cell’s launcher, pick Cursor in the Agent Picker.
  2. Put the directory in WORKING DIRECTORY (the WORKSPACE chip, if that is where you want it).
  3. Flip on what you need. Canvas (render) is the one that carries presentDocument, presentChart, presentHtml and presentForm.
  4. Start a new session. A switch registers the directory, so it never reaches a session that is already running.

How to tell it worked. Three ways, cheapest first:

  • <that directory>/.cursor/mcp.json now lists a mulmoterminal-render server. MulmoTerminal wrote it, and anything you had in that file is untouched.
  • cursor-agent mcp list, run in that directory, says mulmoterminal-render: ready.
  • In the cell, ask it to list the tools on the mulmoterminal-render server. It should name presentDocument, presentChart, presentHtml, presentForm and the ShapeScript ones.

Why ready matters, and what it saves you. Cursor refuses to load an MCP server it has not approved, and it says nothing at all when it skips one — the cell simply reports that it has no MCP servers. MulmoTerminal approves the entries it wrote (and only those) as the cell starts, so this is normally invisible. If a cell reports no servers, cursor-agent mcp list is the command that tells you whether approval is the reason.

The file is kept out of git status — but only when MulmoTerminal created it. If .cursor/mcp.json was already in your repository, it is yours: your entries stay exactly as you wrote them and nothing is hidden from your git status.

→ Which agent reaches the GUI tools how · Antigravity, Grok, Muse and Cursor register everywhere


The token badge on a cursor cell

Nothing to switch on. After a cursor cell finishes its first turn, its header carries the ⇡ input ⇣ output badge the other cells have.

Two things are worth knowing before you read it:

  • It counts from when the cell started under this server. Cursor writes its token counts to no file — they arrive on the hook that ends a turn — so MulmoTerminal adds them up in memory. Restart the server and the count starts again at the next turn. A resumed conversation shows nothing until its next turn ends. That is the honest answer rather than a number carried over from somewhere it cannot be read back.
  • There is no ctx % yet, and that is cursor’s model field. On an Auto session cursor reports its model as default, which is not a model id — and the percentage needs a context window, which is looked up per model. If you pin one (CURSOR_MODEL, or the model control in the launcher), the percentage appears with no other change.

→ Reading a cell


What the cell just answered

Also nothing to switch on. A cursor cell’s finished turn now carries its reply, which shows up in three places that were empty for cursor before:

  • the finished-turn notification (and the phone push) quotes what the agent actually said;
  • handoff — passing one cell’s last exchange to another — carries the answer;
  • a round table seat contributes its conclusion.

It is the conclusion, not the preamble. A turn that says “I’ll read the files first” and then works for a minute passes on the answer it finished with, not the sentence it opened with. That distinction is the whole of the work: most of what an agent writes mid-turn is narration, and handing a round table a preamble as a seat’s contribution is a bug this project has already had once.

→ Cross-terminal talk


The guide’s GUI-tool pages were re-taught

Not a feature, but it is what you will notice if you read the guide: basics, config, glossary and the FAQ taught the GUI-tool split as a two-way choice — “Claude / Codex” against “Antigravity / Grok” — which had been wrong since Muse arrived in 4.7.0 and was wrong twice over after 4.22.0. There are four routes and the guide now says so.

→ How each agent reaches the GUI tools


Nothing else changed

No config keys, no keymap, no new file to write. If you do not run cursor cells, this release changes nothing you can see.

→ Back to the guide


This site uses Just the Docs, a documentation theme for Jekyll.