Log ·
Cursor joins Claude Code, and Keleuo starts on Windows
Keleuo now runs a second agent. By the evening Cursor Agent sessions worked in both views, reopened with their history, and had every model on the account to choose from. The morning went into how Chat and Terminal run an agent, and into getting Keleuo going on Windows.
Cursor Agent sessions
Start a session with Cursor and it runs cursor-agent, Cursor's command-line agent. In Chat you get the same view as a Claude Code session: the reply as it streams, file reads, edits with their diffs, shell commands with their output, and the turn's token count when it ends. Cursor's subagents show as subagent cards and in the Agent panel, with their description and how long they took. Cursor only reports when a subagent starts and finishes, so the card can't show what it did in between.
Cursor doesn't stop to ask before it acts when it runs in the background, so a Cursor session in Chat offers Cursor's own modes rather than Allow and Deny buttons:
- Allowlist only runs what your Cursor allowlist allows and refuses the rest.
- Run everything allows every command.
- Plan and Ask are read only.
Terminal view runs Cursor's own interface on the same chat, where it asks before acting as it normally does. Chat follows along by reading Cursor's record of the chat each time a turn ends. Stop sends Ctrl+C, Cursor's own stop key.
Reopening a Cursor session brings its history back. Cursor keeps each chat in an SQLite database that isn't documented, so Keleuo reads it with a reader for each version of the layout it knows, and falls back to a note if none of them can read it. The database is opened read only, so Cursor's files are never locked. One chat on the test machine was 428 MB, mostly file snapshots, so Keleuo reads only the records it needs.
Images work in both views. In Chat they go with the message. In Terminal, pasting an image or attaching one from the message box types its path, which Cursor turns into [Image #1] the way Claude Code does.
Pick a model, then how hard it thinks
Cursor's model list is long. Its 259 model ids turn out to be 41 models, each in some of seven effort levels, some with a thinking or a fast version. The menu showed every one of those as a model of its own. Now the model menu is a list box you can type into, filtered by name or id and grouped by family (Claude, GPT, Gemini, Grok, Composer and so on). An effort control beside it picks the level, with Thinking and Fast as toggles where the model has them. Keleuo always resolves your choice to a real id from Cursor's list, picking the nearest effort when the exact one doesn't exist.
Claude Code sessions get the same effort control. It sets Claude Code's --effort (low, medium, high, xhigh or max), in Chat and in Terminal. Changing it restarts the agent, straight away if it's idle or after the current turn.
Claude Code can't list its own models, so its list is one Keleuo keeps by hand: the aliases, then the Claude 5 and Claude 4 model ids.
Chat and Terminal each run the agent their own way
Until now a session ran one copy of Claude Code and both views showed it. Now each view runs it the way that suits it: Chat runs it headless and reads its output, and Terminal runs Claude Code's own interface. Switching views ends one and picks the conversation up in the other. Nothing goes to the model until your next message.
You can't switch in the middle of a turn, while a permission prompt is open, or while a background subagent runs, because the switch would cut that work off. The other tab dims and shows a spinner, and hovering it tells you why.
Switching back is instant if nothing has happened since. The view you left keeps its agent idle for up to ten minutes, with its prompt cache warm, and only one of the two is ever allowed to write to the conversation. While the terminal interface starts up, a skeleton of its screen holds its place and fades once it has drawn.
There is a cost the commit measured: the terminal interface starts each request with about 6,000 more tokens of setup than headless mode, so the first message after switching writes those to the prompt cache instead of reading them. The old arrangement, one terminal interface for the whole session, is still there under Settings > Chat > Hybrid Chat and Terminal, marked experimental.
Terminal view over SSH
A session on another machine now runs the agent's own interface there, the same as a local one. Terminal view shows it, Chat follows it, and permission prompts show in both, so Allow and Deny in Keleuo's window reach the agent on the other machine. Nothing has to be installed there. What Keleuo puts on the remote is removed when the session ends, even if the connection drops.
Keleuo on Windows
Keleuo builds and runs on Windows. On a Windows 11 PC, Claude Code sessions work in Chat and in Terminal, and shell terminals run PowerShell. Programs that Keleuo starts no longer flash up console windows, and the title bar can be dragged without clicks on its buttons moving the window.
The title bar has a new menu button on every system, which opens the whole menu. On macOS the menu bar stays too. System, Light and Dark moved out of the title bar into the View menu.
Two things are still Unix only: starting Keleuo a second time opens a new window on Windows instead of handing over to the open one, and the output of Claude Code's background commands isn't found there yet.
Claude's questions show as questions
When Claude Code asks you something with its question tool, Chat used to show it as a permission prompt, "Allow AskUserQuestion?". Now it shows a card with each question and its choices as buttons, with descriptions on hover. A single question with one answer goes as soon as you click. Several questions, or a "choose any", wait for Submit. Skip declines. Afterwards the card reads "Answered: …".
Smaller things
- Each session keeps its own permission mode, and Auto is the default. Claude Code used to start in a different mode headless than in its interface, so switching views changed how often a session asked. New sessions take Settings > Chat > Permission mode for new sessions, and switching modes with Shift+Tab in the terminal sticks.
- Images go with messages in Chat now. Before, Chat dropped them and sent only the text.
- Sending a message with a screenshot in it no longer freezes the window for half a second.
- Three or more calls of the same tool in a row fold into one row with a count, the latest call, how many failed, and how long they took. Click it to open them.
- The strip of subagents above the chat is gone. The Agent panel lists them, and their cards stay in the chat where they started.
- A command Claude Code runs in the background no longer shows up as a subagent with "No messages yet".
- A file copied in Finder and pasted into a terminal now pastes its full path, as Terminal.app does, with spaces escaped. In an agent's terminal, an image file is attached as an image. Dropping files on a terminal works the same way.
- A release workflow now builds, signs and notarizes the Mac app.
- The README has the app icon and a link to keleuo.com.