English | Chinese
Why CCB · What's New · Start and Stop · Configuration · How to Use · How to Install · Release Notes
1. One command for all required CLI operations and management
Start, attach, recover, supervise, and operate Claude, Codex, Gemini, OpenCode, and Droid from one terminal workspace.
- one project entry point for all supported CLI agents
- one place to manage startup, restore, attach, and shutdown
- one consistent runtime flow instead of per-tool ad hoc handling
2. Agents can sense and communicate with each other
Named agents can discover each other, use /ask, broadcast updates, and delegate work without copy/paste.
- direct agent-to-agent delegation with named targets
- broadcast sync for all live agents when the whole team needs the same context
- explicit handoff patterns for builder, reviewer, and QA style workflows
3. Project-level professional agent teams
Build project-local teams with roles, pane layout, provider state, worktree isolation, and lifecycle continuity.
- role-based team composition per project
- isolated provider state under the project runtime
- optional worktrees for agents that need separate working sets
- continuity across restart, recovery, and pane supervision
Latest release highlights
- WSL mounted-drive startup is sturdier: ccbd control-plane probes no longer misread short socket stalls as backend drift.
- Control-plane sockets are more resilient: slow clients no longer block new probes, and transient connect races are retried inside the existing timeout budget.
- README is reorganized around agent teams: install, config, update, and delegation guidance now match the current CLI surface.
See Release Notes for the full history.
ccb # Start default agents from .ccb/ccb.config
ccb -s # Safe start: keep configured/manual permission behavior
ccb -n # Rebuild .ccb except ccb.config, then start fresh
ccb kill # Stop this project's background runtime
ccb kill -f # Force cleanup before rebuilding stateTmux copy/paste: drag with the left mouse button to copy, and use Ctrl+Shift+V to paste.
ccb is controlled by .ccb/ccb.config. This file is project-local and user-authored; if it is missing, CCB uses the built-in default without writing a new config file.
Layout
Use the first compact line to define the team and pane layout:
cmd; writer:codex, reviewer:claude; qa:gemini(worktree)
That layout means:
cmdis the shell panewriter,reviewer, andqaare agent names and pane titlescodex,claude, andgeminiare providers;splits panes left-to-right;,stacks panes top-to-bottomqaruns in an isolated git worktree; agents without(worktree)runinplace
Per-Agent API And Model
Keep the compact layout first, then add TOML tables only for agents that need their own API route, key, or model:
cmd; builder:codex, reviewer:claude; research:gemini(worktree)
[agents.builder]
key = "sk-..."
url = "https://api.example.com/v1"
model = "gpt-5"
[agents.reviewer]
key = "sk-ant-..."
url = "https://api.anthropic.com"
model = "opus"
[agents.research]
key = "gemini-key"
model = "gemini-pro"Notes:
keyandurlare agent-local shortcuts forcodex,claude, andgemini.modelis an agent-local shortcut forcodex,claude,gemini, andopencode.- Setting
keyorurlmakes that agent use the explicit API authority instead of inheriting a global provider API credential. - For advanced provider env, use
agents.<name>.provider_profile.env; do not mix provider API env keys withkey/urlon the same agent. - Do not commit real API keys in a public repo.
Common compact examples:
writer:codex, reviewer:claude
cmd; writer:codex, reviewer:claude; qa:gemini(worktree)
cmd; fast:codex, deep:codex
Same provider, separate API keys:
cmd; fast:codex, deep:codex
[agents.fast]
key = "sk-fast..."
model = "gpt-5-mini"
[agents.deep]
key = "sk-deep..."
url = "https://api.example.com/v1"
model = "gpt-5"Update
CCB v6 currently supports ccb update on Linux, macOS, and WSL. A major upgrade fully replaces the installed runtime. On the first ccb inside an older project, CCB preserves .ccb/ccb.config, clears the rest of the old .ccb state, and rebuilds locally.
If you installed from a git checkout with ./install.sh install, that install now runs in source dev mode:
- Global
ccbandasklink back to the checkout instead of using a copied snapshot - CCB-owned skills and helper scripts also follow the live source tree
- Source installs do not participate in startup auto-update prompts
- Stay on the source/dev track with
git pullor by switching commits, then rerun./install.sh install - Or run
ccb updateto install the latest stable release and repoint globalccblinks to the managed release install
ccb update # Update to the latest stable release
ccb update 6 # Update to the highest v6.x.x version
ccb update 6.0 # Update to the highest v6.0.x version
ccb update 6.0.5 # Update to a specific version
ccb uninstall # Uninstall ccb and clean configs
ccb reinstall # Clean then reinstall ccb- Unix-like (Linux, macOS, WSL)
Use this path whenccband your agent CLIs run in the same Unix-like shell.
git clone https://github.com/bfly123/claude_codex_bridge.git
cd claude_codex_bridge
./install.sh install- Windows
Use this path when your agent CLIs run natively on Windows.
git clone https://github.com/bfly123/claude_codex_bridge.git
cd claude_codex_bridge
powershell -ExecutionPolicy Bypass -File .\install.ps1 installPlatform notes
- macOS and Linux share the same
install.shpath. - For WSL, keep both
ccband the agent CLIs inside WSL. - Native Windows mux is still being rebuilt around
psmux. - The fuller Windows bootstrap helper lives at
scripts/bootstrap-windows-test-env.ps1.
Install note: the commands above install from a git checkout today. After that, run ccb update to download the latest stable GitHub release asset and complete the managed release upgrade automatically.
CCB is agent-first. You can use explicit /ask, explicit $ask, or let one agent decide to call another on its own.
| Mode | Example |
|---|---|
Explicit /ask |
/ask reviewer review the parser changes in src/parser.ts |
Explicit $ask |
$ask reviewer review the parser changes in src/parser.ts |
| Implicit delegation | Ask reviewer to check the parser edge cases, then summarize the issues back to me. |
Use explicit routing when you want a specific target. Use natural language when you want the current agent to decide whether to delegate.
Note: for implicit use, add the ask skill basics to your system memory first; otherwise Codex/Claude may fall back to their own built-in multi-agent behavior instead of calling CCB ask.
Write in editors like Neovim while agents review and iterate in parallel.
- Python 3.10+
- Terminal:
tmux
ccb uninstall
ccb reinstall
# Fallback:
./install.sh uninstall📧 Email: bfly123@126.com
💬 WeChat: seemseam-com
Thanks to the Linux.do community for testing, feedback, and discussion support.
Historical note: older release notes below may mention askd, legacy flags, or removed commands. Those references are kept only as changelog history and do not redefine the current CLI surface.
v6.0.28 - WSL Control Plane Socket Hardening
- WSL Control Plane Startup Hardened: keeper and daemon readiness probes now share the configured control-plane RPC timeout instead of using shorter hardcoded budgets that could misread a slow mounted-drive startup as config drift
- Socket Server Accept Path Decoupled: ccbd now accepts connections separately from a serialized worker lane, so one slow or incomplete client request no longer blocks new control-plane probes or heartbeats
- Transient Connect Retry Added: Unix socket clients retry only short-lived connect races within the existing timeout budget, without retrying already-sent RPC requests or mutating operations
- README Refreshed: the public README was reorganized around the current agent CLI hub/team workflow and updated release guidance
v6.0.27 - macOS Foreground Attach Timeout Hardening
- Foreground Attach Timeout Split: interactive
ccbstartup now uses foreground-attach-specific RPC and target-ready budgets instead of reusing the short daemon probe timeout - macOS Attach Race Reduced: foreground attach now tolerates slower post-start
ccbdping and tmux namespace/window visibility on macOS without redefining daemon startup success - Clearer Attach Failures: attach errors now distinguish between an unresponsive control-plane ping and a responsive daemon whose project namespace is not yet attachable
v6.0.26 - macOS Install And Claude Ask Cleanup
- macOS Release Install Fixed: release installs keep generated CLI wrappers bound to the managed
.venvPython, avoiding environment drift when optional dependencies such aswatchdogare installed - WSL Install Tests Unblocked: watchdog install regression tests explicitly confirm WSL non-interactive install mode so CI covers the intended optional-dependency path
- Claude Ask Prompt Slimmed Down: managed Claude
askno longer injects local ask skill runtime text into the prompt body, keeping agent-to-agent asks limited to the request anchor and the user's original message
v6.0.25 - Gemini Managed Home Alignment
- Gemini Login Inheritance Fixed: managed Gemini panes now set
GEMINI_CLI_HOMEto the isolated home root so Gemini CLI reads the projected.gemini/.env, settings, and login state from the same managed boundary - Regression Coverage Added: launcher tests now lock the aligned
HOME,GEMINI_CLI_HOME, andGEMINI_ROOTcontract and guard against writing settings under nested.gemini/.gemini - Community Contact Trimmed: the standalone Linux.do contact entry was removed while keeping the Linux.do community acknowledgement below the contact block
v6.0.24 - WSL Official Login Transport
- WSL Provider Transport Inherited: managed provider panes now preserve user-session proxy, CA, browser, and WSL interop environment needed by official-login and Codex Apps/MCP networking paths
- Managed Isolation Preserved: transport inheritance is centralized and does not allow caller-global
CODEX_HOME,GEMINI_ROOT,CLAUDE_PROJECTS_ROOT, orCCB_CALLER_*runtime authority to override agent-scoped managed state - Gemini Login Projection Extended: managed Gemini homes now project allowlisted
.gemini/.envAPI credentials,google_accounts.json, andGEMINI_CLI_HOMEwhile diagnostics continue excluding copied auth artifacts - Opencode Session Detection Hardened: opencode now treats env-session mode as active only when its provider-specific runtime env is present, avoiding stale generic
CCB_SESSION_IDcontamination - Community Entry Refreshed: README now includes the refreshed WeChat group QR image and Linux.do community acknowledgement so users can find the current support channels from the public project page
v6.0.23 - CI Matrix Stabilization
- Release CI Greened: latest release validation now points at a commit whose full GitHub Actions test workflow passes across Ubuntu, macOS, WSL, and install smoke jobs
- Provider Blackbox Coverage Focused: heavy pane-backed provider restart / rotate / settle tests now run in a dedicated Ubuntu provider-blackbox job instead of being repeated across every OS and Python matrix cell
- macOS Socket Test Race Fixed: ccbd socket tests now wait for the daemon socket to answer ping requests before issuing RPCs, avoiding macOS runner readiness races
v6.0.22 - Claude macOS Login Inheritance
- macOS Keychain Login Inherited: managed Claude startup now reads official Claude Code login credentials from macOS Keychain and materializes an equivalent project-scoped
.claude/.credentials.jsoninside isolated Claude homes - Claude Account Metadata Refreshed: inherited
.claude.jsonaccount metadata now refreshes from the source home while preserving managed workspace trust and excluding source workspace trust or API key secrets - Default Config Startup Fixed: keeper startup now treats a missing
.ccb/ccb.configas a request to use the built-in default project config instead of exiting beforeccbdcan mount - Regression Coverage Expanded: tests now lock Keychain projection, metadata refresh, and disabled-auth cleanup paths for managed Claude login inheritance
v6.0.21 - Claude Hook Asset Projection
- CodeIsland Hook Assets Inherited: managed Claude startup now copies referenced source-home hook assets such as
.codeisland/when inherited Claude hooks call$HOME/.codeisland/..., preventing missing-hook failures inside isolated Claude homes - Config Boundary Preserved: third-party hook assets are copied only when Claude config inheritance is enabled and the inherited hook payload actually references that home-relative asset path
- Diagnostics Redaction Extended: diagnostic bundles now exclude copied
.codeisland/provider-state assets while still including ordinary managed Claude settings for support
v6.0.20 - Claude Official Login Source Home Fix
- Claude Official Login Source Home Fixed: managed Claude startup now treats
.ccb/agents/*/provider-state/*/homeas an isolated runtime home, not the user's source home, so official browser-login credentials are copied from the real account home - Claude Credential Path Coverage: managed Claude homes now project Claude Code official-login credentials from
.claude/.credentials.jsonwhile retaining compatibility with.config/claude-code/auth.json - Regression Coverage Added: tests now lock source-home fallback, launcher projection, diagnostics redaction, and workspace preparation for official Claude login inheritance
v6.0.19 - Claude Official Login Inheritance
- Claude Official Login Projection: managed Claude homes now project Claude Code official login credentials from
.claude/.credentials.json, so browser-login-backed auth can be inherited into isolated CCB runtimes instead of only API-token-based settings auth - Managed Login Auth Retention: when global Claude auth artifacts disappear but managed Claude state already holds a valid project-scoped login, startup now preserves that managed login auth across restart instead of silently dropping it
- Auth Cleanup And Regression Coverage: disabling auth inheritance now clears stale copied Claude login credentials, and targeted tests now lock the projection, cleanup, and launcher startup paths
v6.0.18 - Gemini Hook Empty-Reply Guard
- Empty Gemini Hook Replies No Longer Burn Jobs: managed Gemini
AfterAgenthooks that fire with an empty reply now downgrade toincompleteinstead of terminalizing as a false exact completion - Exact Hook Polling Becomes Safer: Gemini exact-hook polling now ignores
completedhook artifacts with no reply text, allowing observed session-stability or timeout reliability paths to converge the request instead of accepting a blank terminal result - Regression Coverage Added: targeted tests now lock the empty-reply guard at both the finish-hook artifact writer and Gemini execution-service polling layers
v6.0.17 - Gemini Custom Endpoint Env Propagation
- Gemini Endpoint Override Restored: managed Gemini startup now preserves
GOOGLE_GEMINI_BASE_URLend to end, so custom endpoint and proxy-backed Gemini CLI setups no longer fall back to Google's default production API host - Gemini Model Env Allowlisted: control-plane and provider-profile env filtering now preserve
GEMINI_MODEL, allowing isolated Gemini agents to keep explicit model selection instead of silently dropping it at startup - Config Shortcut Alignment: Gemini
key/urlshortcuts now materialize the same environment variables the current Gemini CLI actually reads, keeping explicit config-based routes aligned with shell-level env behavior
v6.0.16 - Codex Plugin Projection & Cmd Shell Compatibility
- Codex Plugin Projection Fixed: managed Codex homes now project plugin-bundle authority under
.tmp/plugins/and.tmp/plugins.sha, so isolated agents inherit the marketplace catalog and installed plugin assets they actually need instead of starting with plugin-enabled config but missing bundles - Plugin Refresh Semantics Tightened: startup now refreshes managed plugin projections as one authority unit, removes stale managed plugin residue when the source projection disappears, and keeps a cheap no-recopy fast path when the source plugin freshness marker is unchanged
- Cmd Shell / Session Env Hardening: the
cmdpane now directlyexecs the resolved user shell and preserves ordinary user-session transport variables such asDISPLAY,WAYLAND_DISPLAY,DBUS_SESSION_BUS_ADDRESS,XAUTHORITY, andSSH_AUTH_SOCK, improving fish/zsh and GUI-command compatibility
v6.0.15 - Codex Route Authority & Foreground Attach Polish
- Codex Explicit Route Authority: managed Codex homes now materialize agent-local
config.tomlandauth.jsonas the sole authority for explicitkey/urlroutes, so agent-scoped API overrides replace inherited global provider routes instead of drifting back to system config - Codex Session Namespace Rotation: managed Codex startup now fingerprints explicit route authority, stamps reusable session bindings with that authority, and rotates stale
sessions/namespaces before launch when the bound route no longer matches - Foreground Attach UX Hardening: interactive
ccbstartup now seeds tmux namespace creation from the real terminal viewport and issues a best-effort client refresh after attach so first paint matches the current terminal size without manual redraw
v6.0.14 - Claude Logout Recovery Hardening
- Managed Claude Auth Preservation: managed Claude homes now preserve agent-local login auth when the global Claude home has been logged out, so a project-scoped re-login survives restart instead of re-entering a browser-link loop
- Auth Projection Semantics Tightened: Claude startup still refreshes source auth when it exists, but no longer treats missing source auth as an instruction to blank managed auth; disabled auth inheritance still clears stale copied auth state
- Startup Regression Coverage Expanded: targeted regressions now lock this behavior at the projection layer, provider workspace preparation, and Claude launcher startup path
v6.0.13 - macOS Release Path & Preview Packaging Fix
- macOS Release Path: shared release artifact naming and updater resolution now cover the macOS universal bundle alongside Linux/WSL release assets
- Source Dev Install Mode: installs from a git checkout now stay linked to the live source tree, skip startup auto-update prompts, and can switch to a managed release install through
ccb update - Agent API / Model Shortcuts:
.ccb/ccb.confignow accepts flat per-agentkey,url, andmodelshortcuts so common provider overrides stay concise - Preview Packaging Hardening: preview release exports now exclude generated output paths inside the repo, fixing recursive self-copy failures such as
dist-macos-smoke
v6.0.12 - Non-Blocking Startup Update Prompt
- Cached Startup Prompt: interactive foreground
ccbstart now reads install-scoped cached release metadata and only prompts when a newer stable release is already known locally - Background Refresh: missing or stale update cache now refreshes in the background with short network budgets instead of delaying the project startup path
- Upgrade / Defer / Silence: startup prompt supports upgrade now, defer for the current version, or silence that exact version
- Startup Boundary Preserved: release-update checks remain advisory and outside the project lifecycle startup transaction
v6.0.11 - Project Startup Hotfix
- Cold Start Namespace Fix: project tmux namespace startup now treats
no server running on <project socket>as an absent namespace that must be created, instead of failing startup as a generic tmux inspect error - Release Regression Coverage: targeted namespace backend/state regression tests now lock this cold-start path so
ccb -> ping -> killblackbox lifecycle stays covered - Contract Clarification: the startup supervision contract now explicitly defines project-socket
no server runningas a recreate signal rather than a fatal inspect failure
v6.0.10 - Startup Budget Hardening & Gemini Login Inheritance
- Gemini Login Inheritance: managed Gemini homes now project login-auth selection and
oauth_creds.jsonforoauth-personalreuse, and remove stale copied credentials when auth inheritance is disabled - Shared Tmux Ready Budget: project-owned
respawn-panenow uses the same tmux ready-retry budget as namespace create/reflow, reducing transientno server runningfailures during startup and supervision - Background Startup Compatibility: background lifecycle startup keeps supervision compatibility while separating readiness-probe timeouts from operational RPC budgets
- Diagnostics Secret Redaction: diagnostic bundles now exclude Gemini
oauth_creds.jsonalongside other provider credential artifacts
v6.0.9 - Cross-Platform Lifecycle & Watch Stability
- WSL Compatibility Fixed: project runtime now avoids binding Unix sockets onto unsupported WSL mounted-drive filesystems and hardens installer staging plus tmux namespace readiness
- macOS Lifecycle Hardening: startup, restore, and project identity paths were tightened so macOS follows the same lifecycle authority model as Linux without intermittent startup drift
- Respawn Retry Boundary: transient tmux respawn fork, server-exit, and readiness failures are retried inside runtime supervision instead of leaking outward as false lifecycle failures
- Watch Reconnect Recovery:
watchand ask wait can recover terminal results from persisted state after short daemon interruptions, while reconnect loops still honor timeout deadlines - Cross-Platform CI Coverage: GitHub Actions now exercises macOS install smoke and WSL compatibility paths alongside the existing Linux matrix
v6.0.7 - Lifecycle Authority & Shutdown Stability
- Keeper-Owned Lifecycle Authority: keeper now owns lifecycle progression through authoritative
lifecycle.json, generation fencing, and namespace epoch tracking - Mounted-State Read Fixes:
ping ccbdandping agentnow report current mounted state from live authority instead of stale failure residue after recovery - Shutdown Transaction Hardening:
ccb killandccb kill -fnow terminate non-terminal jobs during shutdown so restart cannot resurrect old executions via restore or auto-retry - Real Blackbox Repro Closed: the real
ask -> kill -f -> restartlifecycle repro now converges cleanly toproject_shutdownwithout lingering active execution
v6.0.6 - Agent Isolation Stability & Kill Lifecycle Fix
- Agent Isolation Stability: Codex, Claude, and Gemini managed agents keep their session state under project-scoped
.ccb/agents/<agent>/provider-state/... - Restart Inheritance Safety: restarts restore only the matching managed agent history instead of adopting manual provider conversations from the same working directory
- Project Dotfile Protection: managed startup no longer rewrites project-level
.claude,.gemini, or.codexprovider dotfiles - Kill Lifecycle Fix: interactive
ccbno longer reports a false attach failure afterccb killintentionally tears down the current project tmux session
v6.0.5 - Agent Isolation Stability
- Agent Isolation Stability: Codex, Claude, and Gemini managed agents keep their session state under project-scoped
.ccb/agents/<agent>/provider-state/... - Restart Inheritance Safety: restarts restore only the matching managed agent history instead of adopting manual provider conversations from the same working directory
- Project Dotfile Protection: managed startup no longer rewrites project-level
.claude,.gemini, or.codexprovider dotfiles
v6.0.4 - Legacy Update Compatibility Hotfix
- Backward-Compatible Release Assets: Linux release tarballs now include a compatibility alias so older 6.x updaters can still find the extracted installer path
- Old Clients Can Upgrade Again: existing
v6.0.1andv6.0.2installs can now update to the latest stable release without needing a patched local updater first - Modern Updater Still Clean: current runtime keeps the correct extracted-directory resolution and does not depend on the legacy alias
v6.0.3 - Self-Update Tarball Hotfix
- Release Upgrade Fixed:
ccb updatenow resolves the extracted release directory correctly instead of treating the.tar.gzasset name as a folder - Installer Handoff Restored: self-update now finds
install.shinside extracted release assets and completes end to end - Release Build Hygiene: Linux release packaging now ignores local
.ccb-requests/residue so official builds are reproducible
v6.0.2 - Caller Attribution, Mailbox Routing, and macOS Install Warning
- Correct Caller Identity:
ccb asknow preserves the real originating agent so replies return to the right mailbox instead of being attributed asuser - Stable Reply Routing: async replies for delegated jobs now land back in the expected mailbox chain, including
cmd-anchored flows - Mixed-Case Agent Recovery: config layout recovery no longer drifts when configured agent names use mixed case
- macOS Homebrew Warning:
install.shnow warns clearly when Homebrew is missing before users try to install tmux and other dependencies
v6.0.1 - Release Archive Hygiene & Safer Upgrade Extraction
- Source Archive Cleanup: Removed accidentally tracked pytest temp artifacts so GitHub source archives are clean again
- Safer Tar Validation: Upgrade extraction now rejects unsafe symlink targets before unpacking
- Clearer Failure Mode: Unsafe archive extraction errors now point users toward release assets or clean source archives
- Regression Coverage: Added tests to block ephemeral repo artifacts from being tracked again
v6.0.0 - Native Multi-Agent Runtime, Stable Native Communication, and Linux-Only Auto Upgrade
🚀 New Runtime Direction:
- Infinite Parallel Agent Foundation: CCB v6 is built as the runtime base for effectively unbounded agent-to-agent delegation and orchestration
- Independent Agent Identity: agents can carry different roles, task ownership, skill libraries, and personalities
- Focused User Command Surface: the public user workflow stays centered on
ccb,ccb -s,ccb -n,ccb kill, andccb kill -f
🧱 Project Rebuild Semantics:
- Config-Preserving Legacy Cleanup: On first
ccbinside a pre-6 project, CCB preserves.ccb/ccb.config, removes the rest of the old.ccbruntime state, and rebuilds locally - Runtime Marker: Modern projects now record
.ccb/project-runtime.jsonso current runtime state is distinguished from legacy state - Worktree Safety Guard: Dirty or unmerged CCB-managed worktrees still block destructive rebuilds until the user resolves them
🔄 Upgrade Policy:
- Linux/macOS/WSL:
ccb updateis available on Linux, macOS, and WSL for the 6.x line - Release-Only Upgrades: Source tags are still published with each version, but
ccb updatefor 6.x installs the GitHub release asset, not the source archive - Stable Release Targeting: Default upgrades now resolve to the latest stable release instead of the moving
mainbranch - Major Upgrade Confirmation: Upgrading into
6.0.0requires explicit confirmation before replacing the installed runtime
🤖 Provider Reliability:
- Gemini Multi-Round Stability: Gemini completion polling now waits through tool activity and no longer exits on the first stable planning sentence
v5.3.0 - Simplified CLI, Explicit Worktree Mode, and Gemini Completion Stability
🚀 User-Facing CLI Simplification:
- Narrowed Main Surface: Public startup flow is now
ccb,ccb -s,ccb -n,ccb kill, andccb kill -f - Model Control Plane Still Available:
ask,ping,pend, andwatchremain for agent-to-agent orchestration without cluttering primary help
🧱 Workspace Semantics Made Explicit:
- Default Inplace Mode: Compact
ccb.configentries now expand toworkspace_mode='inplace' - Opt-In Isolation: Use
agent:provider(worktree)when an agent must run in its own git worktree - Safe Agent Churn: Adding agents no longer disturbs existing worktrees; removing or renaming worktree agents retires clean branches and blocks on dirty or unmerged ones
🛠 Recovery & Reset Hardening:
- Config-Preserving Reset:
ccb -nrebuilds project runtime state while keeping.ccb/ccb.config - Stale Registration Cleanup: Start and reset now prune missing registered git worktrees before rematerialization
- Kill Warnings:
ccb killwarns clearly when a worktree agent still has unmerged or dirty state
🤖 Gemini Completion Fix:
- No Early Stop on Planning Text: Gemini completion polling now tracks tool-call activity and waits for the real final reply instead of finishing on the first stable “I will ...” message
v5.2.6 - Async Communication & Gemini 0.29 Compatibility
🔧 Gemini CLI 0.29.0 Support:
- Dual Hash Strategy: Session path discovery now supports both basename and SHA-256 formats
- Autostart:
ccb-pingandccb-mountedgain--autostartflag to launch offline provider daemons - Cleanup Path: zombie-session cleanup is now handled by
ccb kill -f
🔗 Async Communication Fixes:
- OpenCode Deadlock: Fixed session ID pinning that caused second async call to always fail
- Legacy Completion Compatibility: Legacy text-based providers still tolerate mismatched
CCB_DONElines in degraded mode - req_id Regex:
opencode_comm.pynow matches both old hex and new timestamp-based formats - Gemini Idle Timeout: Auto-detect reply completion when Gemini omits
CCB_DONEmarker (15s idle, configurable viaCCB_GEMINI_IDLE_TIMEOUT) - Gemini Prompt Hardening: Stronger instructions to reduce
CCB_DONEomission rate
🛠 Other Fixes:
- lpend: Prefers fresh Claude session path when registry is stale
v5.2.5 - Async Guardrail Hardening
🔧 Async Turn-Stop Fix:
- Global Guardrail: Added mandatory
Async Guardrailrule toclaude-md-ccb.md— covers both/askskill and directBash(ask ...)calls - Marker Consistency:
bin/asknow emits[CCB_ASYNC_SUBMITTED provider=xxx]matching all other provider scripts - DRY Skills: Ask skill rules reference global guardrail with local fallback, single source of truth
This fix prevents Claude from polling/sleeping after submitting async tasks.
v5.2.3 - Project-Local History & Legacy Compatibility
📂 Project-Local History:
- Local Storage: Auto context exports now save to
./.ccb/history/per project - Safe Scope: Auto transfer runs only for the current working directory
- Claude /continue: New skill to attach the latest history file via
@
🧩 Legacy Compatibility:
- Auto Migration:
.ccb_configis detected and upgraded to.ccbwhen possible - Fallback Lookup: Legacy sessions still resolve cleanly during transition
These changes keep handoff artifacts scoped to the project and make upgrades smoother.
v5.2.2 - Session Switch Capture & Context Transfer
🔁 Session Switch Tracking:
- Old Session Fields:
.claude-sessionnow recordsold_claude_session_id/old_claude_session_pathwithold_updated_at - Auto Context Export: Previous Claude session is automatically extracted to
./.ccb/history/claude-<timestamp>-<old_id>.md - Cleaner Transfers: Noise filtering removes protocol markers and guardrails while keeping tool-only actions
These updates make session handoff more reliable and easier to audit.
v5.2.1 - Enhanced Ask Command Stability
🔧 Stability Improvements:
- Watchdog File Monitoring: Real-time session updates with efficient file watching
- Mandatory Caller Field: Improved request tracking and routing reliability
- Unified Execution Model: Simplified ask skill execution across all platforms
- Auto-Dependency Installation: Watchdog library installed automatically during setup
- Session Registry: Enhanced Claude adapter with automatic session monitoring
These improvements significantly enhance the reliability of cross-AI communication and reduce session binding failures.
v5.2.0 - Historical mail bridge release
This release introduced the old mail gateway path. That flow is now removed from the supported agent-first surface and remains legacy code only during cleanup.
v5.1.3 - Tmux Claude Ask Stability
🔧 Fixes & Improvements:
- tmux Claude ask: read replies from pane output with automatic pipe-pane logging for more reliable completion
See CHANGELOG.md for full details.
v5.1.2 - Daemon & Hooks Reliability
🔧 Fixes & Improvements:
- Claude Completion Hook: Unified askd now triggers completion hook for Claude
- askd Lifecycle: askd is bound to CCB lifecycle to avoid stale daemons
- Mounted Detection:
ccb-mounteduses ping-based detection across all platforms - State File Lookup:
askd_clientfalls back toCCB_RUN_DIRfor daemon state files
See CHANGELOG.md for full details.
v5.1.1 - Unified Daemon + Bug Fixes
🔧 Bug Fixes & Improvements:
- Unified Daemon: All providers now use unified askd daemon architecture
- Install/Uninstall: Fixed installation and uninstallation bugs
- Process Management: Fixed kill/termination issues
See CHANGELOG.md for full details.
v5.1.0 - Unified Command System + Historical Native Windows Experiment
🚀 Unified Commands - Replace provider-specific commands with agent-first workflows:
| Old Commands | New Unified Command |
|---|---|
cask, gask, oask, dask, lask |
ccb ask <agent> [from <sender>] <message> |
cping, gping, oping, dping, lping |
ccb ping <agent|all> |
cpend, gpend, opend, dpend, lpend |
ccb pend <agent|job_id> [N] |
Supported providers: gemini, codex, opencode, droid, claude
🪟 Historical native Windows experiment:
- Earlier releases explored a native Windows split-pane path
- Background execution used PowerShell +
DETACHED_PROCESS - Large payload delivery used stdin-based handoff
- That backend has since been removed; future native Windows mux support is being redesigned around
psmux
📦 New Skills:
/ask <agent> <message>- Send work to a named agent/ping <agent|all>- Check mounted agent health/pend <agent|job_id> [N]- View latest agent reply
See CHANGELOG.md for full details.
v5.0.6 - Zombie session cleanup + mounted skill optimization
- Zombie Cleanup:
ccb kill -fnow cleans up orphaned tmux sessions globally (sessions whose parent process has exited) - Mounted Skill: Optimized to use
pgrepfor daemon detection (~4x faster), extracted to standaloneccb-mountedscript - Droid Skills: Added full skill set (cask/gask/lask/oask + ping/pend variants) to
droid_skills/ - Install: Added
install_droid_skills()to install Droid skills to~/.droid/skills/
v5.0.5 - Droid delegation tools + setup
- Droid: Adds delegation tools (
ccb_ask_*pluscask/gask/lask/oaskaliases). - Setup: New
ccb droid setup-delegationcommand for MCP registration. - Installer: Auto-registers Droid delegation when
droidis detected (opt-out via env).
Details & usage
Usage:
/all-plan <requirement>
Example:
/all-plan Design a caching layer for the API with Redis
Highlights:
- Socratic Ladder + Superpowers Lenses + Anti-pattern analysis.
- Availability-gated dispatch (use only mounted CLIs).
- Two-round reviewer refinement with merged design.
v5.0.0 - Any AI as primary driver
- Claude Independence: No need to start Claude first; Codex can act as the primary CLI.
- Unified Control: Single entry point controls Claude/OpenCode/Gemini.
- Simplified Launch: Dropped
ccb up; useccb ...or the defaultccb.config. - Flexible Mounting: More flexible pane mounting and session binding.
- Default Config: Uses a built-in default when
.ccb/ccb.configis missing; CCB no longer creates that file automatically. - Project askd Autostart: project askd and provider runtimes auto-start in the project tmux namespace when needed.
- Session Robustness: PID liveness checks prevent stale sessions.
v4.0 - tmux-first refactor
- Full Refactor: Cleaner structure, better stability, and easier extension.
- Terminal Runtime Cleanup: The runtime moved toward a single tmux-oriented pane/control model instead of parallel terminal backends.
- Perfect tmux Experience: Stable layouts + pane titles/borders + session-scoped theming.
- Works in Any Terminal: If your terminal can run tmux, CCB can provide the full multi-model split experience.
v3.0 - Smart daemons
- True Parallelism: Submit multiple tasks to Codex, Gemini, or OpenCode simultaneously.
- Cross-AI Orchestration: Claude and Codex can now drive OpenCode agents together.
- Bulletproof Stability: Daemons auto-start on first request and stop after idle.
- Chained Execution: Codex can delegate to OpenCode for multi-step workflows.
- Smart Interruption: Gemini tasks handle interruption safely.
Details
- 🔄 True Parallelism: Submit multiple tasks to Codex, Gemini, or OpenCode simultaneously. Provider runtimes queue and execute them serially, ensuring no context pollution.
- 🤝 Cross-AI Orchestration: Claude and Codex can now simultaneously drive OpenCode agents. All requests are arbitrated by the project askd layer.
- 🛡️ Bulletproof Stability: The runtime layer is self-managing. It starts on first use and shuts down after idleness to save resources.
- ⚡ Chained Execution: Advanced workflows supported! Codex can autonomously call
oaskto delegate sub-tasks to OpenCode models. - 🛑 Smart Interruption: Gemini tasks now support intelligent interruption detection, automatically handling stops and ensuring workflow continuity.
| Feature | Codex | Gemini | OpenCode |
|---|---|---|---|
| Parallel Queue | ✅ | ✅ | ✅ |
| Interruption Awareness | ✅ | ✅ | - |
| Response Isolation | ✅ | ✅ | ✅ |
📊 View Real-world Stress Test Results
Scenario 1: Claude & Codex Concurrent Access to OpenCode Both agents firing requests simultaneously, perfectly coordinated by the daemon.
| Source | Task | Result | Status |
|---|---|---|---|
| 🤖 Claude | CLAUDE-A |
CLAUDE-A | 🟢 |
| 🤖 Claude | CLAUDE-B |
CLAUDE-B | 🟢 |
| 💻 Codex | CODEX-A |
CODEX-A | 🟢 |
| 💻 Codex | CODEX-B |
CODEX-B | 🟢 |
Scenario 2: Recursive/Chained Calls Codex autonomously driving OpenCode for a 5-step workflow.
| Request | Exit Code | Response |
|---|---|---|
| ONE | 0 |
CODEX-ONE |
| TWO | 0 |
CODEX-TWO |
| THREE | 0 |
CODEX-THREE |
| FOUR | 0 |
CODEX-FOUR |
| FIVE | 0 |
CODEX-FIVE |
Older Version History
- Zombie Cleanup:
ccb kill -fcleans up orphaned tmux sessions globally - Mounted Skill: Optimized with
pgrep, extracted toccb-mountedscript - Droid Skills: Full skill set added to
droid_skills/
- Droid: Add delegation tools (
ccb_ask_*andcask/gask/lask/oask) plusccb droid setup-delegationfor MCP install
- OpenCode: 修复
-r恢复在多项目切换后失效的问题
- Daemons: 全新的稳定守护进程设计
- Skills: New
/all-planwith Superpowers brainstorming + availability gating; Codexlping/lpendadded;gaskkeeps brief summaries withCCB_DONE. - Status Bar: Role label now reads role name from
.autoflow/roles.json(supports_meta.name) and caches per path. - Installer: Copy skill subdirectories (e.g.,
references/) for Claude/Codex installs. - CLI: Added
ccb uninstall/ccb reinstallwith Claude config cleanup. - Routing: Tighter project/session resolution (prefer
.ccbanchor; avoid cross-project Claude session mismatches).
- Claude Independence: No need to start Claude first; Codex (or any agent) can be the primary CLI
- Unified Control: Single entry point controls Claude/OpenCode/Gemini equally
- Simplified Launch: Removed
ccb up; a built-in default is used when.ccb/ccb.configis missing - Flexible Mounting: More flexible pane mounting and session binding
- Project askd Autostart: project askd and provider runtimes auto-start in the project tmux namespace when needed
- Session Robustness: PID liveness checks prevent stale sessions
- Codex Config: Automatically migrate deprecated
sandbox_mode = "full-auto"to"danger-full-access"to fix Codex startup - Stability: Fixed race conditions where fast-exiting commands could close panes before
remain-on-exitwas set - Tmux: More robust pane detection (prefer stable
$TMUX_PANEenv var) and better fallback when split targets disappear
- Performance: Added caching for tmux status bar (git branch & ccb status) to reduce system load
- Strict Tmux: Explicitly require
tmuxfor auto-launch; removed error-prone auto-attach logic - CLI: Added
--print-versionflag for fast version checks
- CLI Fix: Improved flag preservation (e.g.,
-a) when relaunchingccbin tmux - UX: Better error messages when running in non-interactive sessions
- Install: Force update skills to ensure latest versions are applied
- Async Guardrail:
cask/gask/oaskprints a post-submit guardrail reminder for Claude - Sync Mode: add
--syncto suppress guardrail prompts for Codex callers - Codex Skills: update
oask/gaskskills to wait silently with--sync
- Project_ID Simplification:
ccb_project_iduses current-directory.ccb/anchor (no ancestor traversal, no git dependency) - Codex Skills Stability: Codex
oask/gaskskills default to waiting (--timeout -1) to avoid sending the next task too early
- Codex Log Binding Refresh: the Codex runtime now periodically refreshes
.codex-sessionlog paths by parsingstart_cmdand scanning latest logs - Tmux Clipboard Enhancement: Added
xselsupport andupdate-environmentfor better clipboard integration across GUI/remote sessions
- Tmux Status Bar Redesign: Dual-line status bar with modern dot indicators (●/○), git branch, and CCB version display
- Session Freshness: Always scan logs for latest session instead of using cached session file
- Simplified Auto Mode (Historical): auto-permission behavior was consolidated into the current primary start flow
- Session Overrides:
cping/gping/oping/cpend/opendsupport--session-file/CCB_SESSION_FILEto bypass wrongcwd
- Gemini Reliability: Retry reading Gemini session JSON to avoid transient partial-write failures
- Claude Code Reliability:
gpendsupports--session-file/CCB_SESSION_FILEto bypass wrongcwd
- Fix: Auto-repair duplicate
[projects.\"...\"]entries in~/.codex/config.tomlbefore starting Codex
- Project Cleanliness: Store session files under
.ccb/(fallback to legacy root dotfiles) - Claude Code Reliability:
cask/gask/oasksupport--session-file/CCB_SESSION_FILEto bypass wrongcwd - Codex Config Safety: Write auto-approval settings into a CCB-marked block to avoid config conflicts
- Clipboard Paste: Cross-platform support (xclip/wl-paste/pbpaste) in tmux config
- Install UX: Auto-reload tmux config after installation
- Stability: Default TMUX_ENTER_DELAY set to 0.5s for better reliability
- Tokyo Night Theme: Switch tmux status bar and pane borders to Tokyo Night color palette
- Full Refactor: Rebuilt from the ground up with a cleaner architecture
- Perfect tmux Support: First-class splits, pane labels, borders and statusline
- Works in Any Terminal: Recommended to run everything in tmux (except native Windows)
- Smart Runtime Queue: project askd with 60s idle timeout and provider queue support
- Cross-AI Collaboration: Support multiple agents (Claude/Codex) calling one agent (OpenCode) simultaneously
- Interruption Detection: Gemini now supports intelligent interruption handling
- Chained Execution: Codex can call
oaskto drive OpenCode - Stability: Robust queue management and lock files
- Fix oask session tracking bug - follow new session when OpenCode creates one
- Plan mode enabled for autoflow projects regardless of
-aflag
- Per-directory lock: different working directories can run cask/gask/oask independently
- Add non-blocking lock for cask/gask/oask to prevent concurrent requests
- Unify oask with cask/gask logic (use _wait_for_complete_reply)
- Fix plan mode conflict with auto mode (--dangerously-skip-permissions)
- Fix oask returning stale reply when OpenCode still processing
- Auto-enable plan mode when autoflow is installed
- Simplify cping.md to match oping/gping style (~65% token reduction)
- Optimize skill files: extract common patterns to docs/async-ask-pattern.md (~60% token reduction)
- Fix race condition in gask/cask: pre-check for existing messages before wait loop




