Repository navigation
CCCC 0.4.46
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, or
cccc sessions enable --runtime codex|claude|pi|opencode, then reload the
integration in sessions that are already open. Enabling registers thecccc
MCP 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,/sessions
lists 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 weband
cccc --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 in
ccccd-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_history
returns it once, asdelivery_textplus a singlemessage. - Group state:
cccc group set-state stoppedand the MCPset_state
action 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 add
andcccc 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, andcccc ledger snapshotandcccc ledger compactfail with
group_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 use
cccc --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 newsent=field. Clients reading one message byevent_idwith
cccc_message_historyshould readmessageinstead ofmessages. The
daemon'sgroup_set_stateand the Web API'sstate?state=stoppedreject
stopped; 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.