Skip to content

CCCC v0.4.50 Release Notes ​

CCCC v0.4.50 tells you when something stopped working instead of leaving you to guess: an agent that cannot stay up now says so on the message, and an agent can learn that its own message may not have got through. See When an Agent Cannot Stay Up. Audio plays in the message, and common attachments, links to files and file paths open in the page. See Files and Links Open in the Page. The message log reads better on a phone. Skills reach agents again. Group memory is removed, standing team rules now reach an agent first, /cccc-self-evolution becomes a short team review, and the built-in stand-up becomes a team check; see Team Rules and the Team Review. Automation rules can be run at once and show real run times; see Automation You Can Try at Once. Settings that could be saved but did nothing are gone. This release covers the changes since v0.4.49; see Before You Upgrade before installing.

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 and restart the daemon and Web through your usual launch method to load the new code and bundled Web assets, 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, then start CCCC again. A daemon left running keeps the previous version. Runtime history remains in CCCC_HOME.

  • Restart the daemon first, then update and reload the CCCC integration and reconnect its MCP server in each app for already connected native sessions. Restarting the CCCC daemon alone does not reload those processes. Until a session reconnects, it keeps working on its previous MCP server, but cccc_capability_use does not return a skill's rules there and the team review's tools are missing. The cccc MCP server says when it differs from the daemon address file and which side to restart. Follow the native-session upgrade steps for your app.
  • Group memory is removed. Existing files stay in CCCC_HOME/groups/<group_id>/state/memory/ and still travel with a Group copy, but CCCC no longer searches or updates them. Anything you still rely on belongs in Constraints in the Context panel, or in AGENTS.md if it is long or about the project only. Scripts that call cccc_memory, cccc_memory_admin or the memory_reme_* daemon operations get an error.
  • Values already saved for the settings listed under Other Changes stay in the Group and are ignored.
  • A stand-up rule you saved keeps its schedule, recipients and on/off state. If it uses the built-in stand-up snippet with no text of your own saved for it, it now sends the new text, which asks the foreman for a longer check. If you turned it on at the old 15-minute interval, edit the rule in Automation to run less often; Reset to Defaults would also replace your other rules.
  • cccc_message_history now shows an agent only its own traffic. A script that named another member through a foreman gets an error.

When an Agent Cannot Stay Up ​

A message to an agent that cannot stay up now says so. CCCC tries to start the agent a few times over several seconds, then shows Delivery failed for that agent on the message, with the reason and Retry in its recipients. After you fix the cause, Retry or starting the agent offers the message again. If it may already have reached the agent, its recipients say Delivery uncertain and leave the decision to you. Before, CCCC kept restarting the agent for as long as the message waited, and the page showed only that it was stopped.

  • When an agent ends on its own with an error, the page says so and points to its terminal, so Start Group no longer looks ignored when an agent exits at once.
  • An agent can learn that its message may not have got through. When CCCC stops trying to deliver it, the agent that sent it gets a notice that delivery failed or is uncertain. The notice may be late or lost, it can start that agent for one more turn, and deliveries to Web Model members are not covered yet. If a named recipient is disabled, or the Group is paused or stopped, the send result says so at once.
  • Codex native members show recovery steps when their background server exits or Codex reports the session ended, and their details say that closing the window may not stop them: they can still receive CCCC work and use model credits. Pause CCCC access stops new deliveries from the Group.
  • While the daemon is starting, cccc and cccc web keep checking for its answer for a few seconds before reporting that it is not answering. Before, one failed check was enough, and the report could offer to stop a healthy daemon.

Audio in Messages ​

Audio files in a message can now be played in the browser. Each keeps its download and gains a play button. A message has one player, so you can switch between several clips to compare them. Playback stops if the message scrolls far out of view.

Markdown, PDF and common text files in a message now open in the page when you click their name, with their download next to it. Markdown is rendered, and a long file shows its first 1 MiB. PDF uses the browser's own viewer. Where it cannot show one, you can download it or, unless CCCC is embedded through Connect, open it in a new tab.

  • An address that starts with http://, https:// or www. is now a link in a plain message too. Before, it was plain text unless the message also had Markdown in it.
  • A link to an image, audio or video file opens in the same preview, as does a link to one of the Group's files, and Markdown and text from raw.githubusercontent.com or gist.githubusercontent.com. A preview loads when you click its link. Whether a file from another site shows depends on that site and your browser, so the preview keeps a way to open the original. Other links, including a PDF on another site, open in a new tab.
  • A path with a directory, such as docs/guide/web-ui.md or out/全片.mp4, opens a supported file in Files, as it is now rather than when the message was sent. So does a Markdown link to a file in the workspace. Names may use letters in any language. Put a path in inline code when a name has spaces or symbols other than ., - and _, or when it is relative and starts with a folder named in letters other than A to Z; otherwise it may be missed or only partly marked. A path outside the Group's active scope stays plain text.
  • A file name such as AGENTS.md or build.rs in a formatted message is no longer a link to a website, and formatted messages no longer rewrite .. as an ellipsis or (c) as a symbol.

Messages on a Phone ​

On a phone, a message's sender, time and actions sit above its route, its text uses the full width, and the sender's insight is set apart below it. Back to latest sits beside the members at the bottom of the log, so it no longer covers a message. The first tap on the members' row no longer gets lost while the message box is open, and a conversation that fits on the screen no longer shows "No more messages" above it.

Skills Reach Agents Again ​

A skill chosen from the / menu sent the agent to look for its rules in a place that no longer held them, and a skill assigned to an agent was never mentioned to that agent. cccc_capability_use now returns a skill's rules, and cccc_bootstrap lists the skills an agent may use. The settings text no longer says an assigned agent uses a skill automatically: the agent can find the skill and read its rules.

  • /install now tells the agent which tool to use, a Voice Secretary request no longer sends the agent to an inbox that does not hold it, and a reminder about due replies names the messages.
  • Built-in capability IDs are reserved. A saved copy of a built-in skill no longer outlives an upgrade, and importing one fails instead of reporting an update that never takes effect.

Team Rules and the Team Review ​

An agent that starts or resumes now gets the Group's constraints first. Before, the rest of its recovery context could crowd them out, leaving a few of them or only a note that they were omitted. cccc_bootstrap carries up to six as the budget allows, with a note when any are left out.

Group memory and its recall prompt are removed, so an agent no longer waits for a recall query when it starts. Shared team rules can be kept in Constraints in the Context panel, which you can see and edit.

/cccc-self-evolution is now a short team review. It reads what you said and how many messages, scheduled reminders and open tasks each member has, then brings you at most three proposals, each on its own card with its evidence. Standing rules and changes to members wait for your pick. Before, it read the whole history and kept a checkpoint in Group memory. When 10 more top-level tasks are finished, the foreman's next task update carries a one-line reminder to run it; nobody is woken, and turning the skill off silences it. cccc_message_history gains sender, and cccc_group gains activity.

The built-in stand-up under Automation is now a short team check for the foreman. It is still off by default, and its default interval is now two hours instead of 15 minutes. Its text asks the foreman four things: whether the open work still serves your current goals and outstanding requests; where members waited on each other, redid or duplicated work, handed off unclearly or misread each other, and whether the team still fits the work; whether what you had to say twice went better the next time, and whether improvements you adopted helped; and whether a practical change would clearly pay off. The foreman is to handle what it can, bring you at most one decision, on a card, and stay quiet when nothing needs anyone, unless you asked to hear about the check. Before, the stand-up only said how many minutes had passed. Each run may wake the agent it is sent to and use model credits.

Automation You Can Try at Once ​

Run now in Automation sends a reminder rule's notification once, without waiting for its schedule, so you can see what the built-in stand-up asks before you turn it on. It runs the saved rule, also when the rule is off, does not count toward the rule's maximum runs and does not change its schedule, so a scheduled run may still follow soon after. A paused or stopped Group has to be resumed first. The notification may wake its recipients and use model credits. If the page cannot tell whether a run went out, it says so and does not try again. Agents can run a reminder the same way with cccc_automation(action=run_now), under the same ownership as managing it.

The last and next run in Automation are now in your browser's local time with the time zone, instead of a UTC timestamp. The last run shows when the rule last ran and created its notification, marked when the run came from Run now. Before, it could show the moment the rule's clock started, even for a rule that never ran; runs from before this version are not shown. A rule that will not run now says why instead of showing a next time: the Group is paused or stopped, or it is idle and the rule is the built-in stand-up. A recurring rule saved in another time zone shows that zone and keeps it when edited, and a schedule the daily, weekly and monthly patterns cannot express shows as written instead of as daily at 09:00.

A Group's menu in the sidebar now opens that Group's Automation settings.

Other Changes ​

  • Settings no longer offer options that could be saved but did nothing: Collaboration Follow-ups under Automation (keepalive, help refresh, agent idle alert and group silence check), Include tail in idle notifications under Transcript, and Log level under Developer. For a recurring reminder, use an automation rule.
  • The capability center's Sources page no longer has an on/off switch for a source or a search box. Neither had any effect in this version.
  • cccc_capability_search no longer lists filters that have no effect, and the capability guides no longer promise remote search. Installing skills from a URL or GitHub remains available.
  • The Auto theme now follows the light or dark setting of your system. It used to switch by the local time of day. In English settings its label no longer cuts off.
  • cccc doctor prints a short summary in a terminal. A pipe, a redirect or --json still gets the full JSON report.
  • The first screen of a new Group explains Send, Mail, the foreman and tasks in plainer words.
  • In a Group with several members, agents are asked to tell you privately when a teammate or the team setup is helping or hurting the work. The foreman is asked to check who owns what and whether each member's setup fits when it assigns work, hits a block or takes a handoff.
  • An agent shown a message with more than eight files used to see only the first eight, with no sign of the rest. It now sees up to sixteen, and how many more there are.
  • An exact cccc_message_history read no longer repeats a system notice's text that its delivery text already shows, and mcp_omitted_fields names any field it left out.
  • Runtime wire names now live in one place in the code.

Validation Scope ​

Release preparation ran the Rust workspace tests and static checks, the CI test profile, the Web tests and static checks, and repository checks in isolated homes.

Delivery failures were walked on the real page in an isolated home, on a development build of this change. For an agent whose command exited at once, the message showed Delivery failed for it; Retry failed again until the command was fixed and then delivered. A missing command also produced an error on Start Group. On an earlier build that gave up after three starts instead of six, an agent that came up on a later try still got its message, and one that exited after Start Group raised an error notice. Focused daemon tests cover the sender's failure notice and the answer an agent gets when it sends to a stopped member. Through an isolated MCP server on a development build, 16 checks confirmed that cccc_message_history shows an agent only its own traffic, in lists and in exact reads.

Audio attachments were played on the real page in an isolated Chrome, at desktop and a simulated phone width and in the dark theme, with eight clips in one message and an invalid clip to check failure handling. An audio file was opened in Files to check its controls. Previews were walked on a candidate's own page in an isolated Chrome, through the ordinary page and through Connect with a real signed frame: a PDF in the browser's viewer, downloads matching the original bytes and paths at phone width; an open preview stayed open while 70 new messages arrived. With the old and new message layouts, at desktop and a simulated phone width, the message in view stayed in place at the sampled times in twelve loads of older history.

Automation was walked on the real page in an isolated home and Chrome, on a development build of this change. The Group menu opened the Automation of the selected Group and of another Group. Times showed in the browser's time zone, with a rule's own zone where it differs. Run now wrote one manual notice, showed the last run as manual and left the schedule, the run count and the rules' version unchanged. An unsaved edit asked to be saved first and sent nothing, a paused Group showed its state and disabled Run now, and an idle Group showed why the stand-up would not run and still ran it on request. The list fit a simulated phone width. Through the MCP server, a foreman ran a reminder with cccc_automation(action=run_now), and a peer that claimed to be the user was refused. A bare path to a video with a Chinese name in a hidden folder opened and played in the page, also under a workspace root with Chinese names and at a simulated phone width.

With a recovery context shaped like a real one, v0.4.49 kept only the note that constraints were left out, while this version carried all five. After an upgrade in an isolated home created with the published v0.4.49 executable, the Group memory files stayed in place and a saved test copy of the old built-in skill did not replace the new one. cccc_group activity answered in 0.19 seconds on a copy of a Group with a long history, and a real Claude Code foreman walked the team review once on an isolated copy of a Group without sending its cards. On an earlier candidate, the built-in stand-up fired in an isolated Group, the foreman read its full text through the candidate's own MCP server, and the Automation page carried the new description in all three languages.

The final candidate's own binary reported 0.4.50 and served this version's Automation text. In an isolated home, Run now on the built-in stand-up, which was off, created one notification and recorded a manual run; the rule stayed off and the rules' version did not change. After Run now on a reminder that was off, the team review still counted no scheduled notices for its recipient. The Automation walk was repeated on this binary, and a bare path to a video with a Chinese name opened in the page with a video player. At simulated phone widths of 390 and 320 pixels, in Chinese, English and Japanese, every rule's controls stayed within the page width.

This is not complete live acceptance. Real Claude Code and Codex sessions in an active Group kept working through an earlier candidate's daemon, still on their previous MCP servers. In that Group, the new stand-up text fired once on schedule, and the foreman made the four checks it asks for and reported what it found and what the check cost. Whether a real model follows a skill's rules from cccc_capability_use after its session reconnects, real phones, Safari, Firefox, and native Windows and macOS were not tried.

Thanks to chriscoveries for keeping runtime wire names in one place, to waterbang for the phone message layout and the Discord community links, and to everyone who contributed code, tested and reported issues.

Full source comparison

Released under the Apache-2.0 License.