CCCC v0.4.55 Release Notes
CCCC v0.4.55 adds a project backlog to the Tasks view. A Markdown file in your project, such as BACKLOG.md, holds long-lived topics and ideas; CCCC shows its entries next to the tasks, edits them in place and links each entry to the tasks made from it. See Backlog.
It also resumes more saved conversations after a change of PATH, gives a native session the Group rules only when they are due, and removes coordination notes. It fixes tasks that stayed blocked after the work they waited for was done, interrupting a managed Claude Code agent, a failed delivery that ran its retries again after every restart, and several defects in the Web model connectors and in CCCC Web. Two commands contributed to the CLI are included. This release covers the changes since v0.4.54.
Before You Upgrade
Before upgrading, let sends and recordings finish. Restore or discard waiting sends, then send or copy every unsent draft, restored ones included, and save unsaved edits in Files: all of these live only in the open page. Check whether a message already arrived before sending it again.
Upgrade the CCCC executable, restart the daemon and Web the way you usually launch them, and reload open CCCC pages. 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. A daemon left running keeps the previous version. Runtime history stays in CCCC_HOME.
- A native session keeps the MCP server it started with until that server is started again, for example by restarting the session. Until then the session does not list
cccc_backlog, still lists the removed note actions ofcccc_coordination, which now fail, and keeps the previous tool descriptions and the previous handling ofidempotency_key. - A CCCC page opened before the upgrade sends a removed field with some replies across Groups, and the daemon refuses those replies with
unknown_argumentsuntil the page is reloaded. - Coordination notes saved by earlier versions are not deleted, but CCCC no longer shows them. To keep a copy that is easy to read, copy their text from the Coordination log tab before upgrading. See Coordination Notes Removed.
- After a daemon restart, a native session can receive the full Group rules once more: the record of rules already given is kept in the daemon's memory.
- When the upgrade or a different shell changes the
PATHthat CCCC passes to managed agents, more of them now resume their saved conversations. See Saved Conversations After a PATH Change.
Backlog
A Group can now point each project folder at a Markdown backlog file for topics and ideas that outlive a single task. The file stays the only copy: CCCC reads it when asked and changes only the entry being edited. Tasks work as before without a backlog file.
- Tasks gets a Tasks | Backlog switch. Without a file, the Backlog view offers to create
BACKLOG.mdor to use an existing file, as the AGENTS.md panel does. In a Git project a created file stays out of Git by default through the repository's local exclude file;.gitignoreis not touched. - Entries are the headings under the file's sections. The first time CCCC changes an entry, it adds a hidden ID comment to the entry's heading. A change is refused when the file changed after it was read.
- You can add, edit, move and close entries; closing moves an entry to Closed with a one-line outcome. A folded entry shows its title and the tasks linked to it; opening it shows its full text.
- You can start a task from an entry; an unfinished task of that entry is reused. From the task you can open its entry, write the result back to it or return the task to the backlog. Task numbers are not written into the file, and finishing a task never closes its entry: CCCC asks for an update instead.
- Agents use the new
cccc_backlogtool, andcccc_taskaccepts the entry a task comes from. The read-only exhibit Web does not show the backlog. - The standing instructions now tell every agent when to keep work in a task and when to record a deferred issue or idea in the backlog, with why it waits and when to revisit it. Without a configured file, agents are asked to propose one to you instead of creating it.
Saved Conversations After a PATH Change
Installing or removing a tool can change the PATH that CCCC passes to an agent. That alone made the next start of a managed Claude Code or Pi agent, or of an ACP agent (Copilot, Devin, Cursor, Kimi Code, Auggie, Kiro, Hermes or Droid), begin a new conversation, which v0.4.54 recorded on the agent's page.
Such a start now resumes the saved conversation when the launch differs only in its PATH:
- The saved record must name the compared settings separately, which a successful start under v0.4.54 or later writes. A record written by an earlier version keeps the earlier behavior.
- Pi and the ACP agents start with the new
PATH. - A Claude Code agent resumes only when no background session of it is still running. A running one keeps the
PATHit was started with: CCCC neither takes it over nor stops it, starts a new conversation and does not count that start as a failed resume. - Any other difference follows the existing rules, and a resume that fails still reports the error instead of starting a new conversation.
Group Rules for Native Sessions
A native session's exact read of a message, cccc_message_history with an event_id, returned the full Group rules every time, even right after the session had received them. The rules are now included only while they are due: on the first read in a conversation, after a reported compaction, when the rules change or after the start of a new UTC hour, unless a delivery the session accepted already carried them. The session's other exact reads start with a short receiving-context header. Reading a message on a member's behalf still returns the full rules and does not count as giving them. In a test with a fixture session, the part before the message text in the second read of one message went from 2,365 to 217 characters.
Notifications to a Claude Code session mention the instructions only when the rules are due.
Coordination Notes Removed
Coordination notes, the decisions and handoffs recorded for a Group, are removed:
- the Coordination log tab in CCCC Web;
- the
add_decisionandadd_handoffactions ofcccc_coordination, which keeps reading and updating the Group's brief; - the
coordination.note.addcontext operation; - the two note lists in the
cccc_bootstraprecovery pack, which returned the oldest two notes rather than the latest.
The removed actions fail as unsupported, and the operation is rejected as unknown. Notes saved by earlier versions stay in the Group's stored context; writes to the brief and to tasks keep them. Context reads and recovery no longer return them. The Python and TypeScript SDKs remove their methods for writing notes in 0.4.55.
Tasks and Delivery
- A task kept showing as blocked after every task it waited for was done. Task reads now add
open_blocked_by, the dependencies that are not completed. A dependency counts as completed when it is done, or archived after it was done; archiving unfinished work keeps its dependents blocked, and an unknown task ID still blocks. The Web board, the task list's attention filter and counts, the MCP task summaries,cccc_bootstrapand the TUI's Blocked by use it. Stored relationships do not change. Reported in #201. - When a provider turn kept failing until the delivery worker used up its retries, the next agent start, Group resume or daemon restart ran another round of retries for the same message. The final failure is now recorded as not retryable, with its reason, and automatic delivery no longer picks it up. An explicit
message_delivercan still retry it. Found while investigating #209; whether it caused the repeat reported there is not confirmed. - A task that had started and was moved back to planned could be deleted. It can no longer be, as the Context Ops standard requires.
- The Web assignee picker lists the Group's members, plus any assignee that tasks already name. A member with no reported state and no task was missing from it.
- A task or another part of the Group's context that changed in another tab or through an agent could stay stale in CCCC Web until the panel was reopened. In a browser test, the second of two tasks created one after the other did not appear within 10 seconds before the fix and appeared after about 0.26 seconds with it.
Messages
idempotency_keyincccc_message_sendnow also prevents a duplicate for a local send and a send to another Group on the same instance: the key becomes the send'sclient_idunless one is given. A retry with the same key sent the message twice.connect_sendandconnect_send_filesreject unknown arguments withunknown_argumentsbefore doing anything, like the other message writes.- Two fields that nothing read are removed:
remote_reply_to_event_id, which CCCC Web sent with replies across Groups, and thetitleof the send for agents without MCP. - Tool descriptions say that retry keys also apply to local sends, and that leaving out
actor_idacts as yourself.
Agents
- Interrupting a managed Claude Code agent had no effect with Claude Code 2.1.317. CCCC interrupts through Claude Code's attach request, which lacked two fields that this version requires, so Claude Code refused it and the turn kept running. CCCC now sends them. An isolated probe that sent the corrected request to Claude Code 2.1.317, with a stand-in model, interrupted a busy turn in about 0.28 seconds, and the background session stayed. CCCC's own request is tested against a stand-in socket. Other Claude Code versions were not run.
- A running headless agent without an observed turn was reported as idle, although a live process shows neither. It is now reported as unknown, with the reason
headless_running_state_unknown, and CCCC Web treats it as active; a paused Group stays paused. Reported in #202. cccc actor new-sessionrestarts an agent on a new conversation instead of resuming the saved one, using the same arguments ascccc actor restart. Contributed in #207.- A repeated Dots claim after the previous turn had completed returned
turn_in_progress. When no work is active, it now returns idle withdots_wake_already_completed. Contributed in #212.
Web Model Connectors
- Calling
web_model_connector_configurewithout flags replaced the credential of the active shared ChatGPT or Grok connector, which made the URL issued before it stop working. The call now creates a connector only when none is active and otherwise returns the existing one asoutcome: existing, without its secret. Replacing the credential takesrotate=true; it keeps conversation pairings and Dots state and returns the new secret once. The Rotate action in the Web settings asks for rotation explicitly, and the Dots one-click setup says when a connector already exists. Based on #216. - An interrupted connection attempt could leave CCCC's own setup message unsent in ChatGPT's message box, and every later attempt refused to start because the box was not empty. The next attempt now removes that message without sending it, but only while the box holds exactly that message and no file; any other text or a file is kept and the attempt is refused, as before. When the box holds an unsent draft and no conversation is chosen, the health check recommends clearing the box before choosing one. Reported in #218 and #219.
CLI
cccc ledger searchsearches a Group's ledger by sender, recipient, time, kind and text, and pages through the results. Contributed in #217.cccc actor new-session: see Agents.
Web
- In Tasks, the Working summary block is now the Coordination brief, and its text field Project background, in English, Chinese and Japanese. An empty goal reads "No objective set". While you edit the brief, the strip above the form no longer repeats the saved goal, focus and refresh note; they return when you save or cancel. On a narrow screen, the controls of the editing row wrap as whole groups instead of breaking inside a word.
- Markdown pinned to Presentation draws Mermaid diagrams, as the Files preview of the same file already did.
- The Create Group quick picks show translated labels and matching icons, and stack in one column on phones.
- For a Group without a project folder, the AGENTS.md panel explains that a project folder is needed, instead of offering a Create button that could not work.
- English labels: Edit agent; Documents in the Voice Secretary; New session in the agent menu, on the agent page and in the hint shown after a failed resume.
- The Capability Center's view of source instances, which could not be reached, is removed.
- Segmented controls size their options to their labels. On touch screens one option was clipped.
Validation Scope
Release preparation ran these checks on the final tree, the Rust checks in isolated homes: the Web check and the full Web tests (4,992 tests in 664 files), the repository's Python tests (126 passed) and ruff, and the release version checks for v0.4.55; then rustfmt, clippy and the Rust tests in CI's three groups (3,972 + 47 + 3 passed, 10 ignored), each listed test that is not ignored run exactly once. After these checks, edits were limited to these release notes, and git diff --check was run again.
Each change was also tested when it was made:
- The Backlog was driven through an isolated daemon on a copy of a 182-line backlog file in use. Choosing the file left it byte for byte unchanged, giving an entry its ID added only the ID comment, starting a task from the same entry twice returned the same task, and a change after an outside edit was refused with the file's bytes kept. The Backlog and task screens were walked in an isolated instance in English, Chinese and Japanese at desktop and phone width.
- Tests restart the Pi and the Copilot, Devin and Cursor ACP fixtures with only
PATHchanged and check that the provider sees the newPATHand loads the saved session; the Claude Code path runs through the resume fixture. - The second-read measurement in Group Rules for Native Sessions used a debug build in an isolated daemon, driven over raw IPC with a written native-session record and no provider process. A read on the member's behalf and a list read did not count as giving the rules, and raising the session's context epoch, as a reported compaction does, brought them back.
- A test writes coordination notes in the earlier format, then changes the brief and creates a task, and finds the notes unchanged.
- The test for a delivery that used up its retries fails on the previous code and passes with the change. No real daemon restart was run; the tests check the claim that automatic recovery makes.
- A real-Chrome pairing fixture interrupts CCCC's setup message, rewrites its text or attaches a file while the box takes focus, and checks that nothing is paired or sent.
- The Mermaid diagrams in Presentation, in Chinese, and the Coordination brief, in English, Chinese and Japanese, were checked in an isolated browser at desktop and phone width.
A package built from the same code before the version change and the Claude Code interrupt fix was walked through the common screens in English, Chinese and Japanese at desktop and phone width: 508 screenshots, with no failed step.
This is not complete live acceptance. The isolated measurements do not show how often a session receives the rules in daily use, or how often a real upgrade starts a new conversation. The resume after a PATH change was not run through CCCC with a real model. The interrupt was run against Claude Code 2.1.317 only. Local validation was on Linux and does not establish native Windows or macOS runtime acceptance.