CCCC v0.4.46 Release Notes
CCCC v0.4.46 lets the Codex, Claude Code, Pi and OpenCode sessions you already run work together through CCCC, and adds a terminal interface to a bare cccc. Agents can ask you to decide between options that you answer under the message, browsers can show system notifications for messages and requests waiting for you, and the Web chat gives messages more room on phones. The task board shows more about each task without opening it.
This release covers the changes since v0.4.45. Two changes need attention when upgrading: a bare cccc in an interactive terminal now opens the terminal interface instead of printing launch logs, so scripts should use cccc --headless; and OpenCode Actors that CCCC manages now need OpenCode V2 2.1.4 or later. See Upgrade Notes.
Connect the Sessions You Already Run
Codex, Claude Code, Pi and OpenCode V2 CLI sessions that you started yourself can now join CCCC Groups and contact each other through the local daemon. Each application keeps its own process, conversation, account, model, approvals and terminal. CCCC imports no history, starts no replacement session and needs no provider API key. Groups, Actors, messages and delivery receipts stay the collaboration record, as for managed Actors.
- Enable once per runtime: run
/setupin the terminal interface, orcccc sessions enable --runtime codex|claude|pi|opencode, then reload the integration in sessions that are already open. Enabling registers theccccMCP server and the runtime's own hooks, plugin or extension, and keeps unrelated configuration.cccc sessions disablechanges only what this CCCC installation registered. - Versions: Codex 0.163.0, Claude Code 2.1.306, Pi 1.4.0 or OpenCode V2 2.1.4, or later. Codex sessions receive through Codex's shared app-server (
daemon_auto_start = true). - Join a Group: Connect existing sessions in the Web sidebar adds the sessions you select to an existing Group, or to a new Group with a Foreman you choose. A session can also ask CCCC to contact another session; CCCC then creates or reuses a Group for them.
- Check readiness:
cccc sessions listshows which sessions can receive. Being able to receive does not mean a terminal window is open. - Resume: when a Claude Code or Pi conversation is resumed after its former host exits, CCCC reconnects its Group memberships, with their roles, paused access and pending work. A different conversation does not take over an old Actor's work.
The native application still owns tool permissions, so a CCCC tool call may wait for approval in its terminal. Native sessions are experimental: they were tested on Linux and WSL, and macOS and native Windows still need acceptance testing. Antigravity sessions cannot connect this way yet. The native sessions guide has the full setup, recovery and upgrade steps.
A Terminal Interface for cccc
A bare cccc in an interactive terminal starts the daemon and Web UI as before and opens a small status panel within at most 100 columns: the actual Web address, CCCC_HOME, whether this launch owns the daemon, your Groups with their status and running actors, and the native sessions this CCCC knows.
- Arrow keys, Enter, Tab and Esc move through every screen. Enter on a Group opens its page: its state, its actors, a link to it in the Web UI, its tasks (read-only, a page at a time) and the actions its state allows. Start, Resume and Stop each ask for a confirmation that starts on Cancel.
- Type
/for the commands:/setupconnects native sessions,/sessionslists them, and/quitor Ctrl+C stops what this launch started and reports what actually stopped. cccc --headless, the same launch ascccc web, keeps the plain log output for servers, containers, service managers and scripts. Launches without a terminal and read-only Exhibit mode stay plain as well.
The terminal interface was tested on Linux; macOS and Windows terminals still need acceptance testing. Everything else stays in the Web UI.
Answer Agents' Questions in Place
An agent can ask you to choose between two to four options, each with its consequence and an optional recommendation. You pick one, or write your own answer, under the message itself; the agent receives an ordinary reply such as Selected B: <label>. Requests without options can be answered in place too.
- An answer is accepted only while the request is open and only when its sender is provably the agent that asked. Answering never resumes a paused or stopped Group or turns a disabled agent back on; delivery waits until you do.
- Waiting for you appears first among the message filters while requests to you are open in the Group and lists all of them, however old. The sidebar shows how many requests wait in each Group. A count that cannot be confirmed shows as
?, never as zero. - The message text still carries the whole question for IM, the terminal and older clients.
System Notifications
Each browser can subscribe in the Web UI settings. While CCCC's Web service runs, it tries to notify that browser of every message an agent sends you and every request waiting for your answer, even with no CCCC page open; opening a notification tries to show its message. Desktop Chrome, Edge, Firefox and Safari, Chrome on Android, and iPhone and iPad with iOS 16.4 or later (once CCCC is added to the Home Screen) can subscribe, on a page served over HTTPS or from localhost.
A notification shows the Group, the sender and up to 140 characters of the message, which a locked screen may show. Nothing is announced while the Web service is stopped, and only messages written after a browser subscribes are announced. The Web UI guide has the steps and what each platform needs.
More Room for Messages, Especially on Phones
On screens narrower than 768 px, with the header and filters shown, the visible message area on a 390×640 screen grows from 226 to 429 px. The header is shorter, the filter row stays on one line and an idle message box is a single row. Scrolling the messages by touch toward newer ones slides the header, filters and runtime dock out of view; they return when you scroll back, tap the messages, reach the newest message or touch the message box.
On every screen size the chat is more compact and consistent. Sender, recipients, Mail mode and time share one line; your messages sit on the right and agents' on the left; quoted replies expand from two lines; attached images show thumbnails before sending. The runtime dock also does less work while nothing changes.
A Task Board That Tells More
- Cards show how long ago a task changed, the first open checklist item when there is no summary, and how many direct subtasks are done. A Done card says how many checklist items remain open, and old blocking, waiting or handoff marks no longer show on Done or archived cards.
- While searching, the board counts matching tasks and quotes the matched words when they are not near the start of the card.
- The task editor shows the main fields first, edits the checklist as items, and grows text fields with their content. Moving a task to Done no longer requires Closeout Verdict or Verification Summary sections.
- Moving a card changes only its status, and opening a task loads its current details first, so edits made elsewhere are not overwritten. Deleting a task is refused if it or anything below it changed after you confirmed, and Restore returns an archived task to its earlier status.
Clearer Status, Versions and Diagnostics
- A Group that was not stopped or paused but has no running actor is now Offline; Stopped means only that the Group was stopped.
- When the Web server and the daemon report different versions, the Web shows a notice with both versions.
cccc daemon start,cccc webandcccc --headlessprint a diagnostic when they reuse a daemon of another version; they do not replace it. - A daemon started by
cccckeeps its warnings and errors inccccd-diagnostics.log, readable as Daemon diagnostics in the Web UI's developer log settings. It never records message or error text, paths on your machine or provider output. - Dots and Grok Bot panels show how long ago CCCC recorded the claim of an unfinished turn. Grok Bot actors have their own icon.
Runtime and Delivery Changes
- Codex: messages to a native Codex session in the middle of a turn are added to that turn, as pressing Enter does in the Codex CLI, instead of each opening a turn of its own afterwards.
- OpenCode: managed Actors, and OpenCode as Voice Analyst or Secretary, run on OpenCode V2 through its HTTP/SSE server instead of ACP. Kilo keeps its own ACP adapter.
- Delivered messages show their original time in the header, as
sent=2026-10-28T01:45:03Z, so an agent can tell an old instruction from a new one. - MCP: reading one message by
event_idwithcccc_message_historyreturns it once, asdelivery_textplus a singlemessage. - Group state:
cccc group set-state stoppedand the MCPset_stateaction withstoppednow stop the Group the waygroup stopdoes. - Copy Groups imports are assembled out of sight and appear complete, rewrite compacted history to the copy's identity, and reject malformed or unsafe archive entries before publishing the copy.
- Windows: saving Group settings, tasks or other state no longer fails with "Access is denied" while another part of CCCC is reading the same file.
actor_listreports each Actor'seffective_scope, the workspace its CCCC tools use.- Model labels: an Actor can carry an optional
model_label, a model its operator declares for people and external tools. CCCC does not check it or use it to launch the runtime. Set it with--model-labeloncccc actor addandcccc actor update, ormodel_labelinactor_add,actor_updateand the MCPcccc_actoradd action. Thanks to chriscoveries for #170. - Mail summary:
cccc inbox-summary --cutoff <RFC3339>, or daemon operationinbox_summary, shows for every Actor how much Mail is still waiting, how much of it was sent at or before the cutoff, and the age of the oldest when it can be established. It does not consume Mail, start Actors or send notices, and returns no message text. The user, the system and the Foreman may use it. Thanks to chriscoveries for #183.
Other Fixes
- In the Web message box, keys pressed while an input method composes Chinese or Japanese text stay with the input method instead of picking an item from an open
@or/menu. - Bold, italic and strikethrough text that ends in full-width punctuation now renders in Chinese and Japanese messages, and the Web page declares its interface language so browsers can pick the right forms of shared characters.
- The reply progress under a message that asked agents for replies tells a cancelled request apart from a replied one, instead of counting it as replied.
- On narrow screens, the message box names the send mode when it is not plain Send. When Send + reply cannot be used, as with
@allselected, the menu says under that option how to make it available. - The message list's loading notices, the reply button in search results and the status symbols in the recipient status dialog follow the interface language instead of always using English. The symbols are now exposed as images with those names; whether screen readers announce them was not tested.
- Ctrl+C while
cccc --headlessorcccc webis still starting now stops the Web server and the daemon it started, instead of waiting 60 seconds. - Reading or writing a deleted Group's history no longer recreates its directory, and
cccc ledger snapshotandcccc ledger compactfail withgroup_not_foundfor it. - On devices with a top safe area, such as the Web UI opened from a phone's Home Screen, the page no longer extends below the screen and cuts off the message box.
Upgrade Notes
Upgrade the CCCC executable and restart the daemon and Web through your usual launch method to load the new code and bundled Web assets. The standalone installer behind cccc update stops a running daemon and starts it again from the new version. Before a pip upgrade, run cccc daemon stop and close any foreground CCCC so pip can replace the executable, especially on Windows, then start CCCC again. A daemon left running keeps the previous version and does not have this release's features. Runtime history remains in CCCC_HOME.
- Scripts and automation that start
ccccin a terminal should usecccc --headlessorcccc web. Options such as--portno longer select the plain output. - OpenCode: install OpenCode V2 2.1.4 or later for managed Actors. An Actor that last ran on V1 is not resumed as V2: choose New session to start it on V2; its earlier history stays with OpenCode. Remove
--purefrom runtime commands. CCCC refuses to interrupt a single OpenCode turn, since V2 can only interrupt the whole session; interrupt in OpenCode's terminal, or use Quit. - Connected agents need to reconnect their CCCC MCP server before they can ask you with options.
- Integrations: scripts that match the exact delivery header text need to allow the new
sent=field. Clients reading one message byevent_idwithcccc_message_historyshould readmessageinstead ofmessages. The daemon'sgroup_set_stateand the Web API'sstate?state=stoppedrejectstopped; usegroup_stoporPOST /api/v1/groups/<group_id>/stop. - Model labels need a daemon of this version. An older daemon that is still running reports success without keeping a label, and an older version that saves the Group afterwards, as after a downgrade, drops it.
- Native session integrations enabled before upgrading: follow the upgrade steps in the native sessions guide to load the new MCP server and tools inside each application.
Live Voice remains experimental, and Grok Voice's reported pitch and timbre drift is not confirmed fixed. The global Secretary still shares model history across Groups.
Thanks to waterbang and chriscoveries, and to everyone who contributed, tested and reported workflow issues.