Repository navigation
Releases: circle-platforms/circle
Release list
Circle 1.14.0
Added
- The terminal reports its turn state. The full-screen interface keeps one state for the terminal — a turn runs, a card waits for you, or the last turn failed until the next one starts (stopping with
escis not a failure) — and reports changes to every terminal asOSC 9;4, and to an Otty pane as anotty state:circleline, so Otty shows its agent badges and notifications. With several conversations open, the most urgent state counts.
Fixed
- A new desktop terminal leaves the tab you picked in front. If you added or restarted a terminal and chose a tab before the new shell had started, the new terminal could take the front back, and the next action from the terminal menu, such as copy complete output, went to it instead. It still comes to the front when you have not picked a tab meanwhile.
- New session answers the keyboard after an unfinished press. On the desktop sidebar and the sessions page, pressing new session and releasing the pointer outside the button could leave the next Enter on that button doing nothing. A keyboard activation now always starts a new session, and a cancelled press no longer counts as one.
- Saving on Windows waits out a refusal Windows gives no name. Some refusals to replace a file that another program briefly holds reach Circle as
UNKNOWNrather than as a busy or denied file. The desktop editor's save now waits up to two seconds for those too, checking each time that nothing else changed the file, instead of failing at once. - Resizing redraws every row. A terminal that gets shorter drops rows at the top of the alternate screen and moves the rest up, but the full-screen view only wrote rows whose text had changed, so the welcome could go missing after a pane split and stay missing when the height came back. A resize now invalidates the previous frame first, as
ctrl+ldoes, but without clearing the screen. - Leaving the interface no longer leaks terminal answers into the shell. The full-screen interface asks the terminal for its colours when it starts, and when it left it restored the screen and stopped reading at once, so answers that arrived after that stayed in the input and the shell read them as typed text. Leaving now asks for the primary device attributes once the screen is restored and keeps reading until that answer arrives or 500 ms pass.
- The welcome ring draws in Terminal.app. The monospace fonts macOS gives Terminal.app have no sextant characters, so the ring's top and bottom rows showed as missing glyphs. When
TERM_PROGRAMisApple_Terminal, the ring is now drawn in quadrant block characters, sampled again at that size; everywhere else it is the same sextant ring as before.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.14.0/install.sh | CIRCLE_VERSION=1.14.0 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.14.0'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.14.0/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.14.0-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.14.0-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.14.0-windows-x64.msi |
| Linux x64 | circle-desktop-1.14.0-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.13.1
Fixed
- Desktop controls respond after a drawer closes. In 1.13.0, a control whose tooltip was open could ignore the next click or keyboard activation after its press closed the drawer. This could prevent the browser from opening in a separate window again after it was returned to the drawer.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.13.1/install.sh | CIRCLE_VERSION=1.13.1 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.13.1'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.13.1/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.13.1-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.13.1-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.13.1-windows-x64.msi |
| Linux x64 | circle-desktop-1.13.1-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.13.0
Breaking changes
- The bundled Hub integration has been removed. Circle no longer ships the
hubextension, its/hubcommands or its desktop Hub and platform pages. Its saved extension data and secrets are left on disk; removal does not revoke tokens at the service that issued them. - MCP tool approval follows the server's annotations by default. A tool the server marks read-only can run without asking. A call that sends a local file or a secret's value follows the normal approval rules and is refused in read-only and plan mode. Set
trust_annotations: falseon a server to treat its tools as unannotated, as in 1.12.0; the session's approval mode still applies. Only configure servers you trust. - Existing skill outputs no longer receive a separate overwrite approval. In
accept-editsmode, changes to files inside the workspace can proceed without a card even when they are existing skill-run outputs.
Added
- Headless runs can connect MCP servers. Print, line and RPC modes load configured MCP servers before the first prompt when started with
--extensions, alongside extensions. Server instructions are available from the first turn, and tools follow the same approval, cancellation and redaction rules as in the full-screen interface. - MCP headers can use a saved secret. Configure
${secret:NAME}in an HTTP server's headers instead of writing the value in settings; Circle substitutes it when connecting and redacts it where the server quotes it back. - MCP tools can take local files. For a tool that declares a base64 file argument, Circle reads the named file under its normal file-access rules and shows its path, size and digest on the approval card before sending it.
- Circle can save a device profile. The
terminal_profile_savetool saves a device's address, port, user and sign-in reference; a password is stored by the name of a saved secret, never by its value.
Changed
- Desktop settings open over your work. Settings and capability management are collected in one searchable dialog, with a simpler sidebar and direct links to each group. Closing settings returns to the view and keyboard focus you were using.
- Some MCP file calls can reuse a result. When a server marks a tool idempotent, repeated calls with the same file contents and other arguments can return an earlier successful result until Circle sends a call that may change that server. Changes by other clients are not observed; set
trust_annotations: falseto send every call. - Routine hook allows stay quiet by default. New tool results no longer carry the routine allow prefix, and older prefixes are hidden in the interface without changing stored history. Set
show_hook_allowto show routine allow notices; denials, questions, failures and after-tool output remain visible.
Fixed
- Browser shortcuts close the active tab. Closing a newly opened browser tab keeps the page you were already using, even when the interface has not yet caught up with the new tab.
- The changes list catches up after a slow Git read. Reopening the list, or a change arriving, while Git was still answering could leave it showing the older state.
- The work drawer's controls stay visible in a narrow window; the conversation title is shortened instead.
- The sidebar keeps its position while sessions move. When the list has room to scroll, the row you were looking at stays in place even if a scroll notification is still pending.
- The editor uses its updated HTML sanitizer. The application now uses the patched sanitizer in the editor itself, as well as in its dependency list.
- An approved SSH host key resumes the paused login. Rejecting a key closes the paused connection, and a connection that has already ended starts a fresh login instead.
- Grep reports files it did not search. Files over the size limit, non-UTF-8 files and unreadable files are counted in the result, so a search with no matches no longer implies they were searched. Literal ASCII searches also avoid decoding files that cannot match.
Known issue in 1.13.0
- A desktop control can ignore the first click after its panel closes. If a tooltip is showing when a press closes the panel before the mouse is released, the next activation of that control can be missed. Activate it again. The confirmed issue and its fix are tracked in #352.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.13.0/install.sh | CIRCLE_VERSION=1.13.0 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.13.0'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.13.0/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.13.0-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.13.0-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.13.0-windows-x64.msi |
| Linux x64 | circle-desktop-1.13.0-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.12.0
Added
- Circle can sign the work it does. In a git repository, the commits and pull requests Circle makes now credit Circle: as the author on headless runs, as a co-author in the TUI and the desktop app, with the person who ran it as the other party either way. A
Generated with Circleline closes its pull request bodies. Theattributionsetting turns it off, and the desktop settings page carries the switch.
Fixed
- A device key answer now does its work where you can see it. Answering a first-login key question opens the console it was for and brings it to the front; if that login stops on the way in, the panel says why and keeps the question open for another answer, and a click on a question that has already closed says so instead of doing nothing.
- Terminal tabs stand in the order they came to be. A shell opened after a device console now sits after it rather than jumping in front of it; an order you set by dragging still wins.
- Closing a device console asks first. A console's × confirms before it cuts the wire to the machine; closing several at once from a tab's menu does not ask for each.
- A release that cannot reach nodejs.org no longer fails for it. The pinned Node.js archive is downloaded once, kept on disk, and reused by later builds while its checksum matches the pinned digest, instead of being downloaded again for every target.
- Two desktop checks measured their machines instead of the application. The component journeys' timed step no longer includes their browser install, the journeys run as three parallel shards each with a budget of its own so a slow runner cannot starve the tail of the list, and the check that sends a several-megabyte pasted picture now waits for the request and the finished turn separately instead of giving both one short wall clock.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.12.0/install.sh | CIRCLE_VERSION=1.12.0 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.12.0'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.12.0/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.12.0-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.12.0-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.12.0-windows-x64.msi |
| Linux x64 | circle-desktop-1.12.0-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.11.0
Added
- Web search works on Bailian Anthropic routes. Native web search now runs on the
bailian-anthropicpreset and carries the documented billing identity; before, the gateway silently ignored the search tool and the model answered from memory instead of searching. - GitHub can be connected while a turn is running. Connecting, checking or disconnecting GitHub from the desktop no longer fails with
a turn is runningwhen the open conversation is busy; those actions only talk to the connection backend and leave a status notice in the conversation.
Changed
- Tool calls fold per model step on the desktop. Each step of a turn gets its own folded line, such as
ran 2 commands, edited calc.py +1 −1, instead of one summary for the whole turn, and when thinking is shown, a thinking-only step stays between its tool lines. - A screenshot Circle took stays with the call that took it: the folded line says
2 pictures, and opening the calls brings them out, each a small picture, instead of the picture sitting under the line on its own. - Settings is one page with its groups listed at the left. The search box and the list jump to a group, and the highlighted name follows the page as it scrolls.
Fixed
- Changing the folder for tasks with no project works. Settings → tasks with no project → change… picked a folder and then failed with
set-task-folder is not connected yet; the request now goes through. - Find and picker search stay fast in long conversations. A keystroke in the ctrl+f find box, or in a picker such as /resume, rescanned the whole conversation twice; on a 39,000-row transcript that cost about 89 ms per keystroke. The searched text is now cached until the conversation changes.
- The parallel-task limit no longer opens a folder's task ledger. Reading or saving agents at once in settings could fail with
collaboration scheduler is already open; the limit belongs to the application and is now read and saved without opening a folder, and a task ledger a dead process left behind expires by heartbeat instead of blocking its folder. - Two folders that share a name are told apart in the project menu, which says which folder each sits in, and a folder already on the list keeps its single row and its place when it is opened again.
- A removed folder leaves the workspace trust list once its conversations are archived, instead of staying on the list with nothing left to trust or remove.
- Ctrl+C copies text selected anywhere, such as an answer in the conversation, not only text selected in the message box; the draft survives.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.11.0/install.sh | CIRCLE_VERSION=1.11.0 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.11.0'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.11.0/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.11.0-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.11.0-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.11.0-windows-x64.msi |
| Linux x64 | circle-desktop-1.11.0-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.10.3
Fixed
- A desktop update no longer stalls at
restarting…. Quitting waits at most ten seconds for the runtime to close and then ends it, and no longer stays open behind a dialog when it cannot stop. The macOS and Linux installers wait two minutes at most for the old copy to quit; past that they keep the old copy and the download, and the next start says the application did not quit. This protects updates from 1.10.3 on; updating from an earlier version can still stall, see Known issues. - Closing the browser on Windows no longer says it did not stop when it had. An exit Windows has confirmed is waited for even when Node hears of it a few turns after the deadline.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.10.3/install.sh | CIRCLE_VERSION=1.10.3 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.10.3'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.10.3/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.10.3-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.10.3-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.10.3-windows-x64.msi |
| Linux x64 | circle-desktop-1.10.3-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.10.2
Fixed
- The desktop says when the runtime is slow to answer a command. After four seconds the conversation that asked shows
Circle is still working on custom-command · 9s, counting up until the runtime answers. A command that fails, or goes unanswered for two minutes, leaves a card in the conversation with the runtime's own words under error details, instead of failing with nothing on screen. A slash command that failed outright can be retried by name; a timed-out one cannot, because it may still run. A title request no longer holds a session open for more than three seconds when it closes, and the runtime's output is written tologs/runtime.logwhen a command times out. - On Windows, stopping a command waits until its processes have exited before saying they stopped, and one process that cannot be observed no longer leaves the others running.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.10.2/install.sh | CIRCLE_VERSION=1.10.2 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.10.2'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.10.2/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.10.2-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.10.2-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.10.2-windows-x64.msi |
| Linux x64 | circle-desktop-1.10.2-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.10.1
Changed
- The terminal is English again, whatever the system language. 1.10.0 showed the screen,
/help,/hotkeys,circle --help,circle updateand the installers' steps in Simplified Chinese whenLANGUAGE,LC_ALLorLANGnamed Chinese, and earlier releases did so for the session list,/hub, hook notices and the upgrade notice. The desktop keeps its Chinese,/hub's replies included. Chinese text that you, the model or a tool wrote still counts as two columns and wraps as before.
Fixed
- A Chinese closing mark stays with its text when the message box wraps, instead of starting the next row, and a wrapped row never grows wider than the box.
- Updating from 1.9.1 prints what's new and the cleanup command. An updater older than 1.10.0 runs the new installer, which now prints the release's notes link, the space the kept versions use and the command that removes one. Updating 1.9.1 to 1.10.0 printed neither.
circle --mode rpcends when its input closes, also when the stream is destroyed rather than ended.- Leaving the full-screen interface on Windows no longer sometimes ends with a crash status (
0xC0000409). Circle now finishes restoring the screen before the console goes back to line input. - On Windows, closing the browser waits for Chrome's exit that is already queued before saying it did not stop.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.10.1/install.sh | CIRCLE_VERSION=1.10.1 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.10.1'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.10.1/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.10.1-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.10.1-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.10.1-windows-x64.msi |
| Linux x64 | circle-desktop-1.10.1-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.10.0
Added
- The terminal speaks Chinese when your system does. With
LANGUAGE,LC_ALLorLANGset to Chinese, the screen,/help,/hotkeys,circle --help,circle updateand the installers' steps are in Simplified Chinese, in the same words as the desktop. What you, the model, a tool or a file wrote stays as written. Columns count a Chinese character as two cells, and a line never starts with a closing mark or ends with an opening one. - Pictures for a model that cannot read them. Set a side vision model,
visioninsettings.jsonor theCIRCLE_VISION_*variables, andread_fileon a picture returns its description,screenshotandbrowser_screenshotsave the picture and describe it, and the newvisiontool asks the side model a question about a picture file. A picture sent with a message reaches such a model as its path, written to the project's data folder when it had none, so the model can have it described. A model no catalog lists is marked text-only when its endpoint says it takes no pictures, until Circle quits. See Images and screenshots. terminal_waitchecks what a device printed.absentfails the wait the moment a line you name appears,retrieswaits again after a timeout, andchangedreturns exactly the lines printed during the wait, whatever the screen did meanwhile./hookslists your hooks and the project hooks files that wait for your approval.- A desktop quick connect signs in over SSH with a password. The password is used for that login only: kept in memory until the login has read it, never saved or shown to the model.
- Terminal tabs have a right-click menu, a name and an order of your own. Rename a shell's tab and Circle's tools and cards call it by that name, also after a restart; close the others or all; drag a tab either way, and the order holds in every window until Circle quits.
circle --approve-hooksapproves the project hooks files that wait, for print, line and rpc mode.
Changed
- Plan mode keeps its plan in a file and asks what to do with it. Each conversation has one plan file in the project's data folder; in plan mode it is the only file that changes, and writing it never asks. When the plan is ready, Circle asks: implement in auto mode, implement with manual approval, change the plan, or save the plan only. The desktop opens the plan where a file opens; the terminal asks in the question card, with the plan's path. Deleting a conversation removes its plan, and a fork or clone starts with a copy. A
plan.mdelsewhere is no longer the one file plan mode may write. - A project hooks file runs only in a version you approved. A new or changed file is asked about when a turn starts, in the terminal and in the desktop, listing each hook as new, changed or removed; focus starts on skip. Print, line and rpc mode do not run a waiting file and say so once on standard error. After upgrading from 1.9.1, a project hooks file that ran before waits once as a new one. See Approving a project hooks file.
- An unknown slash command is cleared with a suggestion instead of going to the model. A path such as
/usr/binstill goes to the model as text. circle -con a session another terminal runs opens it view-only instead of exiting. Nothing there can change it: renaming, compacting and the like are refused.- Terminal tabs keep their numbers. A new shell takes the lowest number free; closing a tab does not rename the others, and a restart keeps the tab's number. An exited shell stays in the row with its exit code and restart, and the model can restart it by typing to it.
- A browser page that moves to a window of its own, or back, stays loaded on macOS and Windows. On Linux it opens again in the new window, with its history.
- The desktop runs on Electron 44.9.1 (Chromium 152.0.7977.167, Node.js 24.22.0), with the 44.x security fixes since 44.7.0.
- The overview's changes card lists the files that differ from the last commit, each with its letter and its lines, and a click opens one in the changes mode. this session in the changes mode lists them too, beside the files Circle's file tools changed, so a change made by a command shows in both. Where the changes mode is wide, as in full view, its list stands beside the difference, and a long difference scrolls in the height left.
- Removing a workspace in settings is one step: it archives its conversations, stops trusting the folder and forgets it, or, when a conversation cannot be archived yet, changes nothing and says why. Trusted folders are green and others red.
circle updatenames the releases it skipped, with their notes, how much disk the kept older versions use, and what to do when the release lookup is refused.
Fixed
- A wait on a desktop terminal tab ends when the shell is back at its prompt, whatever the prompt looks like (
❯,➜ … ✗), instead of running to its timeout. - "run this in terminal N" types the command only where the line that runs is the card's, with its secrets' values, and never after text already on the prompt.
- A click in a terminal keeps the keys that follow for the terminal, and only those typed in the message box.
- Giving the browser back after its developer tools were open across a move works again, and moving a page while you hold the browser no longer throws in the main process.
- The overview and the changes and files modes read Git again after each of Circle's tool calls, not every 1.2 seconds while a turn runs.
- Closing a device console you hold disconnects it at once, instead of waiting until you give it back; what Circle was waiting to do on it ends, and Circle is told that you disconnected it. Circle's own disconnect still waits while you hold the console.
- English words stay whole at apostrophes when the terminal wraps.
- The hub's footer lamp says when the hub cannot be reached or the sign-in expired, and
/hub helpwaits at most three seconds for the hub. - The folded row of a turn's tools stays on one line in the desktop.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.10.0/install.sh | CIRCLE_VERSION=1.10.0 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.10.0'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.10.0/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.10.0-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.10.0-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.10.0-windows-x64.msi |
| Linux x64 | circle-desktop-1.10.0-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.
Circle 1.9.1
Added
- Circle can work in your desktop terminal tabs. The
terminal_*tools also reach the shells you open as terminal tabs in the desktop application, listed aslocal:<id>beside the device consoles under their tab's name (terminal 1); background commands, services and closed shells are never listed. Reading a tab asks nothing. The first thing Circle types in a tab asks you, in every mode including auto, whatever a rule, anallowed_commandspattern or a hook allows; after that a line it runs there is approved as the sameexecutecommand would be, under the same rules, and plan mode refuses it before the tab sees it. A tab stays yours: typing in it while Circle uses it takes it over, ends Circle's read or wait at once and refuses its typing until you hand it back; stopping ends Circle's action without taking the tab; Circle never closes a tab, and closing one ends what Circle was doing in it. In the terminal drawer, the shell Circle works in has a blue dot and ring, or an orange one while Circle waits for your answer, with take over and stop at the end of the row, and give back once you hold it. The terminal interface has no terminal tabs. See Circle in your terminal tabs. - A desktop task that needs review can be sent back with a reason. The decision, with your reason and the attempt and patch you were shown, is recorded on that attempt, and the task runs again as a new attempt in a fresh worktree from the same commit. Its worker is told the reason after the task's own instruction and acceptance criteria, and so is the worker of every later attempt. The attempt sent back keeps its worktree and results; tasks waiting for it keep waiting. In the window, send back on the review card at the end of the task's own conversation does this.
- Circle ships with a skill of its own,
create-pr. Ask Circle to open a pull request, or load it with/skill create-pr: it checks the branch andgh auth statusfirst, and says to rungh auth loginwhen the GitHub CLI is missing or not logged in. It commits only the files that belong to the work, in the repository's own commit style, on a branch other than the default one, pushes it and opens a draft pull request, or updates the one already open. It never merges or force-pushes without asking, and ends with the pull request's number and URL. A skill of the same name in any skill folder replaces it./skillmarks it(Built-in)and the desktop's skills page marks it bundled. See Built-in skills. - An overview pinned beside the desktop conversation. One column of cards, 380 pixels wide, that only shows: the environment, the context (tokens, cost, cache and the instruction files, folded), what is in progress (the plan step, the subagents at work with what Circle sent each to do, the tasks), the files this session changed marked M, A or D, and the changes: the lines added and removed since the last commit, create pr or update pr (Circle does it with the built-in skill), and the repository's pull requests with their checks and a menu to open one, copy its link or copy the log of a failing run. A card with nothing in it is not drawn. A mode of the drawer opens beside it, and when the conversation would be squeezed the overview steps aside and comes back by itself when there is room.
- The browser and the terminal can leave the drawer for a window of their own. open in a window on either one's toolbar; its button in the top bar is underlined in blue and brings the window to the front, put back in the drawer closes it, and so does showing another conversation. The browser's page moves with its window and stays loaded.
- Screenshots Circle takes are small pictures in the conversation. A click opens one large, with copy image and save to file. A screenshot you take of the page from the browser's ⋮ menu goes into the message box as an attachment.
- The files mode lists every file, with changes marked. A changed name is coloured (orange changed, blue new) with its letter, a folder with a changed file under it carries a dot, and a deleted file is only in the changes mode. A file opens as itself beside the tree at 760 pixels, with a full view in its heading, and its editor marks beside the line numbers the lines that differ from the last commit: orange changed, blue new, a red triangle where lines were deleted.
Changed
- The desktop's right-hand side is a row of icons and a mode beside the overview. The top bar has the overview, then files, changes, browser, subagents and terminal; a mode has no title bar, and a click on its button or
esccloses it. The subagents button counts the subagents at work and the terminal button the background commands that run. The activity, tasks, devices, debug and context panels are gone; their work is in the overview and the modes. - The plan above the input box, the context ring and the lines for running subagents and background commands under it are gone. They moved to the overview and the top bar; above the box stays the count of requests waiting for you.
- Changes is one list. Files, each M, A or D with its lines, for this session or all uncommitted, with the difference of the one you choose and open file. The window no longer stages, commits or pushes; ask Circle for a pull request, or use the terminal.
- Subagents have a mode of their own. The list shows each with what Circle sent it to do; one opened widens the drawer, and what it asks to approve is a card in the main conversation with its name on it.
- The terminal is one row of tabs. Shells, commands Circle runs in the background and device consoles are tabs, each with a × (a background command that still runs has stop instead); + makes a shell, connects a saved device or a new one by address. A command that runs in the background has a tab with stop. The row's ⋮ menu has what the bar under the screen had.
- The browser shows its tab row only when there are several tabs. The ⋮ menu is new tab, zoom, find, take page screenshot, developer tools and close tab; take over is a button beside the address while Circle works, the ring is blue while Circle works and orange while an action waits for you, and the picture of the page is no longer shown under it.
- The desktop's light theme is white, and its text the system's own font. The conversation, the sidebar and the drawer share one white ground,
#FFFFFF, set apart by their borders, and the panels, borders and hover follow from it; the dark theme and the terminal's colours are unchanged. The window uses SF Pro on macOS and Segoe UI Variable on Windows 11 (Segoe UI before it), with PingFang or Microsoft YaHei for Chinese; an installed Inter no longer takes their place. - The desktop says less where it has nothing to add. The home and an empty conversation no longer carry a line under their question, the browser's empty page no longer repeats its address field, a file just opened does not say its changes are saved, and the settings page offers start queued tasks without a note repeating it. Interface words are lowercase, and English and Chinese use one word for one thing, as the design has them.
- A task that needs review is reviewed in its own conversation, not in a panel. The card shows what really ran and asks for each criterion and what you saw; send back takes a reason. Circle makes, starts and retries tasks; the sidebar and the overview show them.
Removed
- The desktop's tasks panel and its manual controls (new task, start, retry, cancel). Circle makes and runs tasks, and the card for a task that needs review is in its conversation. Operations an interrupted run left for you to settle, which that panel listed, are a card of the overview now.
- The developer extension is gone, with Node debugging and the desktop editor's TypeScript and JavaScript language service. The desktop application has no debug tab, no debug-file button and no breakpoints in the editor gutter, and its editor no longer offers go to definition, references, rename, formatting or code checks. The editor still opens files with syntax highlighting and saves with the version check. The desktop package no longer carries the js-debug adapter, TypeScript or a TypeScript language server. An
extensions.developerentry that an earlier version saved insettings.jsonis ignored and left there, and/extensions enable developersays there is no extension of that name. The agent'slsptool, Chromium's developer tools in the browser and the other extensions are unchanged. - Automatic delivery is gone from the desktop application. Circle no longer takes a request on its own from tasks to a draft pull request, follows its checks or schedules repairs; tasks themselves stay. The GitHub extension stays: with a connected account and an allowed repository, the model can still read the branch it would publish, publish it as a draft pull request, read its checks and failed logs and run failed jobs again. What earlier versions saved for automatic delivery stays in the data folder and is no longer read.
Fixed
- A program a Windows command started through another
cmdis ended. Withcmd /c start /b node …, the innercmdended at once and its program kept running out of reach oftaskkill: stopping the job, cancelling the command or leaving Circle left it running and its folder could not be removed. Circle now puts each command's shell in a Windows Job object and follows its whole tree, and stopping a job that is already marked done ends what its command left running instead of doing nothing. - Ctrl+K in a desktop terminal is the shell's on Windows and Linux. With the keyboard in the terminal panel or a device console, Ctrl+K opened search and a...