Wundur

Log ·

Cursor asks before it acts, turns get summaries, and the window does less work

Most of the morning finished what yesterday started with Cursor. After that came a run of changes to how a turn reads: messages that wait their turn, grouped tool calls, and optional summaries written by a model on your own machine. The late afternoon went into performance, measured on a fixed test scene, and the numbers are below.

Cursor asks before it acts

Cursor sessions in Chat now talk to Cursor over ACP, the Agent Client Protocol, instead of starting a new background run for every message. One Cursor process stays up for the session, so there is no start-up wait per message and Stop cancels the turn cleanly.

The bigger change is that Cursor can now ask. A command outside your Cursor allowlist shows up in the window as a permission prompt with Cursor's own options, Allow once or Reject, just as Claude Code's prompts do. The default mode for Cursor sessions is now Ask before acting. When Cursor asks you a question, it gets the same question card as Claude Code. Models and their effort are set through the protocol, and images go in the prompt.

A Cursor session is now one chat whichever view you use. Cursor keeps chats started from its interface and chats started over ACP in two separate places, and neither could see the other, so Terminal would start an empty chat of its own. Keleuo now links the two so both views find the same conversation. It never deletes either copy: an empty duplicate is moved aside, and if both somehow hold a conversation, they're left alone with a note. The link works on Windows without administrator rights, and over SSH it is made on the machine Cursor runs on.

Over SSH, a reopened Cursor session asks Cursor to replay the chat, rather than copying a database that can run to hundreds of megabytes. Locally, the record is still read directly.

Summaries of each turn, from a model you run

Keleuo can now write a short summary at the end of each turn, using a language model server you point it at, such as LM Studio, Ollama or llama.cpp. It is off by default. Settings > Summaries has the server, the model (listed from the server), an optional key for servers that want one, and what to send.

What it sends is your message, what the agent said, and the paths of the files it changed. The tool lines are optional, and file contents and command output are never sent. The model answers in a fixed shape:

The summary appears as a card at the end of the turn, with a spinner while it is being written, and the card names the model that wrote it. Its headline also shows in the session list, where Needs you shows in amber when something is waiting. Each item under Needs you links to the part of the reply it came from, and one that came from a ! command has a Run pill to run it.

The prompt is a Markdown file you can edit, with a Reset button. What the fields and outcomes mean is sent separately after your prompt, so editing the prompt can't change how the card reads them. Turning thinking off makes a summary take seconds instead of about half a minute.

Messages wait their turn

A message sent while the agent is working no longer goes straight in. It waits in a small panel tucked under the top of the message box, one row per message with its first line, any images, Send now and a remove button. When the turn ends, the first one goes, then the next after that turn, so the order in the chat is the order the agent got them. Stopping a turn holds the queue until you send something.

Send now puts the message into the running turn when the agent can read messages mid-turn, as Claude Code can in either view. When it can't, as with Cursor over ACP, Send now stops the turn and sends the message first.

The context meter, and what the agent is doing

The context meter could read "259% of context". It was adding up every request in a turn, so a turn with many tool calls counted the conversation many times. It now uses the turn's last request and says it plainly: "180k of 1M context", with the percentage on hover.

Later in the day it started taking the window's size from Claude Code itself and measuring against the point where Claude Code compacts, about 33k tokens short of the full window. From 70% of the way there the figure turns amber, in the header and in the session list, and from 90% it turns red and a Compact pill appears. The chat's menu has Compact the context at any time. Cursor over ACP has no compact command, so its sessions get neither. New session left the chat header too; Cmd+N and the session list still start one.

The blue bar across the chat while the agent works is gone. What the agent is doing now shows in grey at the foot of the conversation, the way a chat app shows someone typing: a spinner, then Thinking, Writing or the tool it is running ("Running cargo test", "Reading x.rs"), and how long it has been at it.

Did the agent get my message?

Your last message now shows whether the agent has it. Once the agent echoes it back, its prompt hook runs, or it starts working, the message gets a faint periwinkle edge, with Received by the agent on hover. If the turn fails or the agent exits before any of that, the edge is red and stays. It works the same way for every agent.

This went through a few versions during the evening, including a green check and a green tint. Green read as done, and received isn't done, so it ended up as the edge.

Background agents don't look finished

A turn that sends agents off to work in the background ends straight away, and until now it looked finished. Now, until the last agent reports back, a tinted bar above the message box says so ("3 agents are still working · 6m; Claude Code picks up when they report back") and lists each agent. The turn's summary says Agents working instead of Done, and the session keeps its dot in the list.

A window that does less

Keleuo used to redraw the whole window whenever anything in it changed, including a word streaming into a session you couldn't see or output in a hidden terminal. A run of changes stopped most of that. The session list redraws only a row that actually changed, terminals that aren't on screen stay still, and the text cursor stops blinking when Keleuo is in the background. On macOS the spinner while the agent thinks is drawn by the system, so turning it costs Keleuo nothing. Streamed text is drawn in the same frame it arrives in, and a fast stream draws at most ten times a second.

Measured on a fixed test scene with a scripted agent:

Tool calls fold into groups

Any two or more tool calls in a row between bits of the agent's text now fold into one row, labelled by count, such as "2 commands, 2 reads". Failed calls and edits with a diff stay in view.

Each turn also stands apart more clearly. The message that starts a turn has three times the space above it as the items inside the turn, and items in a Markdown list have a little room between them.

Pictures

When the agent reads an image file, for example a screenshot it is checking, the image now shows under the tool call as a thumbnail. Before, it was dropped. Any image in the chat opens full size over the whole window, with a Close button, and Esc closes it from anywhere. Images you send now show above your message's text, the way they looked in the message box and the order the agent receives them.

Skills for Cursor

Cursor sessions have a Skills tab now, listing the skills Cursor reads, in the order it reads them: .cursor/skills, then the .claude, .codex, .grok and .agents skills folders, in the project and in your home folder, then Cursor's built-in skills, then the skills of installed Claude Code plugins. A skill you create in a Cursor session goes in the project's .cursor/skills.

The Skills tab also shows AGENTS.md when the agent reads it. For Cursor that is a group of the instruction and rule files it loads, including .cursorrules and .cursor/rules.

Install skills from git

The Skills tab can now install skills from a git repository. Paste a git URL, an owner/repo, or a link to a folder on GitHub, and Keleuo fetches it with your own git access. It lists every skill it finds, with its files (anything an agent could run is marked) and the whole SKILL.md to read before you choose. Install the ones you want for all projects or just this one. Each copy goes in the folder each agent reads first, and an agent that already reads another agent's copy is skipped, as Cursor reads Claude Code's. Nothing is run by installing, and existing folders are only replaced if you say so.

Keleuo remembers where each skill came from and which commit. Right-click an installed skill for Update, which fetches it again so you can read the new version before it replaces the old, or Remove, which deletes only the copies Keleuo made.

Your own skills can be renamed and removed too, from icons that appear on hover or from right-click. Renaming changes the folder and the name inside SKILL.md, and removing moves the skill to the Trash. New skill asks for a name first, and it and Install from GitHub are now labelled buttons at the top of the tab. Sessions and files got the same hover icons: rename and close for a session, rename and remove for a file, with open tabs following a renamed file. Over SSH, where there is no Trash, Keleuo says so before deleting.

A new look, being tried out

The window's look is being reworked, mostly in the light theme, and these changes are marked as prototypes in the commits. So far: one white work area with rounded corners where it meets the session list, the session list as a lighter inset panel with a Sessions heading, the chat fixed in the centre with files and terminals opening to its right, larger tool panel titles and lists, and a choice of tab styles in Settings > General > Tab style. The strip of icons beside the folded tool panels is gone; right-clicking the tool panels button in the title bar lists them instead.

Terminals also keep a minimum contrast, as Ghostty and iTerm2 do, so a program's dark-theme colours and faint text stay readable on a light background.

Smaller things

All entries