Skip to content

CCCC 0.4.46

Choose a tag to compare

@github-actions github-actions released this 30 Oct 09:58
· 122 commits to main since this release

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 /setup in the terminal interface, or
    cccc sessions enable --runtime codex|claude|pi|opencode, then reload the
    integration in sessions that are already open. Enabling registers the cccc
    MCP server and the runtime's own hooks, plugin or extension, and keeps
    unrelated configuration. cccc sessions disable changes 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 list shows 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: /setup connects native sessions, /sessions
    lists them, and /quit or Ctrl+C stops what this launch started and reports
    what actually stopped.
  • cccc --headless, the same launch as cccc 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 web and
    cccc --headless print a diagnostic when they reuse a daemon of another
    version; they do not replace it.
  • A daemon started by cccc keeps 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_id with cccc_message_history
    returns it once, as delivery_text plus a single message.
  • Group state: cccc group set-state stopped and the MCP set_state
    action with stopped now stop the Group the way group stop does.
  • 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_list reports each Actor's effective_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-label on cccc actor add
    and cccc actor update, or model_label in actor_add, actor_update and
    the MCP cccc_actor add action. Thanks to chriscoveries for
    #170.
  • Mail summary: cccc inbox-summary --cutoff <RFC3339>, or daemon
    operation inbox_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 @all selected, 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 --headless or cccc web is 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 snapshot and cccc ledger compact fail with
    group_not_found for 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 cccc in a terminal should use
    cccc --headless or cccc web. Options such as --port no 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 --pure from 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 by event_id with
    cccc_message_history should read message instead of messages. The
    daemon's group_set_state and the Web API's state?state=stopped reject
    stopped; use group_stop or POST /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.

Full source comparison