You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,14 @@
2
2
3
3
## Unreleased
4
4
5
+
## v6.2.7 (2026-05-21)
6
+
7
+
### Config Source And Stop Cleanup Release
8
+
9
+
-**Three-Layer Config Sources Added**: config resolution now reports explicit source kinds for built-in defaults, user config at `~/.ccb/ccb.config`, and project config at `.ccb/ccb.config`, with project config taking highest priority.
10
+
-**Config Validate Output Clarified**: `ccb config validate` now surfaces `config_source_kind` and `used_builtin_default`, and README/docs/`ccb_config` skill guidance describe the active config layer instead of assuming only project config.
11
+
-**Kill Cleanup Ordering Fixed**: `stop_all` now defers project tmux namespace destruction until after the socket response finalizer, so `ccb kill` and `ccb kill -f` launched from a CCB tmux pane can finish daemon cleanup before their pane is destroyed.
-**CCB tmux is isolated from user config by default**: managed tmux commands now use `tmux -f /dev/null ...`, preventing user `~/.tmux.conf` plugins and hooks from changing CCB pane layout.
78
-
-**Source installs are more deterministic**: source/dev installs use a Python wrapper, honor `CCB_PYTHON_BIN`, run post-install entrypoint smoke checks, and bound Droid MCP registration with a timeout.
79
-
-**Provider startup stays compatible and reliable**: restore-fresh takes effect, Claude trust state is written in the managed home, and Claude auto-permission continues to use `--permission-mode bypassPermissions`.
77
+
-**Config sources are explicit**: CCB now reports whether the effective config came from the built-in default, user `~/.ccb/ccb.config`, or project `.ccb/ccb.config`.
78
+
-**`ccb config validate` shows the active layer**: validation output now includes `config_source_kind` and `used_builtin_default`, and docs/`ccb_config` guidance match the three-layer precedence.
79
+
-**`ccb kill` cleanup is ordered after the response**: project tmux namespace destruction is deferred until after `stop_all` finalization, so cleanup completes even when kill is launched from a CCB tmux pane.
80
80
81
81
See [Release Notes](#release-notes) for the full history.
82
82
@@ -98,7 +98,7 @@ Tmux copy/paste: drag with the left mouse button to copy, and use `Ctrl+Shift+V`
98
98
99
99
## Config Control
100
100
101
-
`ccb`is controlled by `.ccb/ccb.config`. This file is project-local and user-authored; if it is missing, CCB uses `~/.ccb/ccb.config` when present, then falls back to the built-in default without writing a new project config file.
101
+
`ccb`resolves config in three layers: built-in default, user config at `~/.ccb/ccb.config`, then project config at `.ccb/ccb.config`. Project config has highest priority; if it is missing, CCB uses the user config when present, then the built-in default, without writing a new project config file.
102
102
103
103
`.ccb/ccb_memory.md` is the project-wide shared memory document.
104
104
@@ -117,7 +117,7 @@ Invoke it from a supported provider skill surface, for example:
117
117
$ccb_config Design a team for a Python library with one coordinator, two worktree implementation agents, and one reviewer.
118
118
```
119
119
120
-
The skill helps choose agent names, providers, `inplace` versus `git-worktree`, compact layout syntax, and whether role instructions belong in shared or per-agent memory. It validates that `.ccb/ccb.config`is the active authority and tells you to restart CCB after file changes are complete.
120
+
The skill helps choose agent names, providers, `inplace` versus `git-worktree`, compact layout syntax, and whether role instructions belong in shared or per-agent memory. It validates which config layer is active and tells you to restart CCB after file changes are complete.
121
121
122
122
</details>
123
123
@@ -338,6 +338,15 @@ Thanks to the [Linux.do community](https://linux.do) for testing, feedback, and
338
338
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.
339
339
340
340
<detailsopen>
341
+
<summary><b>v6.2.7</b> - Config Source And Stop Cleanup Release</summary>
342
+
343
+
- Reports explicit config source kinds for built-in defaults, user `~/.ccb/ccb.config`, and project `.ccb/ccb.config`, with project config taking highest priority.
344
+
- Updates `ccb config validate`, README/docs, and inherited `ccb_config` skill guidance to describe the active config layer.
345
+
- Defers project tmux namespace destruction until after the stop-all response finalizer so `ccb kill` / `ccb kill -f` can complete cleanup from inside a CCB pane.
346
+
347
+
</details>
348
+
349
+
<details>
341
350
<summary><b>v6.2.6</b> - Tmux Isolation And Startup Hardening Release</summary>
342
351
343
352
- Runs managed tmux commands with `tmux -f /dev/null ...` by default so user tmux config, plugins, hooks, and sidebars cannot reshape CCB-managed layouts.
Copy file name to clipboardExpand all lines: docs/ccb-config-layout-contract.md
+10-5Lines changed: 10 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,17 +9,22 @@ It is the authoritative design anchor for:
9
9
-`.ccb/ccb.config`
10
10
-`.ccb/ccb_memory.md` and `.ccb/agents/<agent>/memory.md` project memory placement
11
11
- compact layout grammar
12
-
-built-in default config fallback
12
+
-config source precedence and fallback
13
13
- pane naming and pane color identity
14
14
- tmux split sizing rules for the project UI
15
15
16
16
## 2. User-Facing Config Contract
17
17
18
-
-`.ccb/ccb.config` is the only user-facing project config file.
18
+
- Effective config is resolved in three layers:
19
+
1. built-in default config from code;
20
+
2. user config at `~/.ccb/ccb.config`;
21
+
3. project config at `.ccb/ccb.config`.
22
+
- Higher layers override lower layers by replacing the whole effective config; CCB does not merge partial config documents across layers.
23
+
-`.ccb/ccb.config` is the highest-priority user-facing project config file.
24
+
-`~/.ccb/ccb.config` is the user-level config file used only when project config is absent.
19
25
- CCB must not auto-create, reconstruct, or rewrite `.ccb/ccb.config`; it is a user-authored project file.
20
-
- When `.ccb/ccb.config` is absent, config loading must use the built-in default project config from code and report the source as `<default>`.
21
-
- CCB must not read an implicit global `~/.ccb/ccb.config` or install-location config as a fallback.
22
-
- User help text, validation output, diagnostics, and docs must point to `.ccb/ccb.config`.
26
+
- When both `.ccb/ccb.config` and `~/.ccb/ccb.config` are absent, config loading must use the built-in default project config from code and report the source kind as `builtin_default`.
27
+
- User help text, validation output, diagnostics, and docs must report the active config source kind: `project_config`, `user_config`, or `builtin_default`.
23
28
-`.ccb/config.yaml` is not part of the contract and must not be read or written by current code.
Copy file name to clipboardExpand all lines: docs/ccbd-startup-supervision-contract.md
+6-3Lines changed: 6 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -122,8 +122,11 @@ Out of scope:
122
122
123
123
### 5.3 Desired Agent Set
124
124
125
-
-`.ccb/ccb.config` is the only forward authority for the project's desired agent mount set and foreground layout.
126
-
-`.ccb/ccb.config` logical names are also the only forward authority for project-namespace pane display names.
125
+
- Effective config is resolved in three layers: built-in default, user config at `~/.ccb/ccb.config`, then project config at `.ccb/ccb.config`.
126
+
-`.ccb/ccb.config` is the highest-priority forward authority for the project's desired agent mount set and foreground layout when it exists.
127
+
- When `.ccb/ccb.config` is absent, `~/.ccb/ccb.config` is the user-level forward authority for the project's desired agent mount set and foreground layout when it exists.
128
+
- When both files are absent, the built-in default config is the forward authority for the desired agent mount set and foreground layout.
129
+
- Effective config logical names are the only forward authority for project-namespace pane display names.
127
130
- Until a future explicit `enabled` or `desired_state` field exists, all configured agents are desired agents.
128
131
-`default_agents` and CLI `requested_agents` do not redefine long-lived backend ownership.
129
132
-`requested_agents` may affect foreground behavior or warm-start order only.
@@ -132,7 +135,7 @@ Out of scope:
132
135
133
136
Authority order must be enforced exactly as follows:
134
137
135
-
1.`.ccb/ccb.config`
138
+
1.effective config, resolved as `.ccb/ccb.config` > `~/.ccb/ccb.config` > built-in default
Copy file name to clipboardExpand all lines: inherit_skills/claude_skills/ccb_config/SKILL.md
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,11 +5,11 @@ description: Design and edit CCB project teams by updating .ccb/ccb.config plus
5
5
6
6
# CCB Config
7
7
8
-
Use this skill to design and edit a CCB-managed project team. The output is a valid `.ccb/ccb.config` plus preserved project memory updates in `.ccb/ccb_memory.md` and `.ccb/agents/<agent>/memory.md`.
8
+
Use this skill to design and edit a CCB-managed project team. The usual output is a valid `.ccb/ccb.config` plus preserved project memory updates in `.ccb/ccb_memory.md` and `.ccb/agents/<agent>/memory.md`. If the user explicitly asks for a user-level default team, edit `~/.ccb/ccb.config` instead.
9
9
10
10
## Core Workflow
11
11
12
-
1. Resolve the config authority first. The current CCB project config is `.ccb/ccb.config`;`.ccb_config/ccb.config` is legacy residue and must be treated as read-only migration evidence, not as the file to edit.
12
+
1. Resolve the config authority first. CCB config precedence is built-in default < user config `~/.ccb/ccb.config` < project config `.ccb/ccb.config`.`.ccb_config/ccb.config` is legacy residue and must be treated as read-only migration evidence, not as the file to edit.
13
13
2. Read the current `.ccb/ccb.config`, `.ccb/ccb_memory.md`, and relevant `.ccb/agents/<agent>/memory.md` files before proposing changes.
14
14
3. If the user's project goal and workflow are not already clear, ask a short clarification question before designing the team.
15
15
4. After the basic workflow is clear, propose one complete config with sensible defaults and ask for confirmation or adjustments.
@@ -18,11 +18,13 @@ Use this skill to design and edit a CCB-managed project team. The output is a va
18
18
-`.ccb/ccb.config`
19
19
-`.ccb/ccb_memory.md`
20
20
-`.ccb/agents/<agent>/memory.md`
21
-
7. Validate the written config with the CCB config loader and verify that the loader read `.ccb/ccb.config`, not the built-in default config.
21
+
7. Validate the written config with the CCB config loader and verify that the loader read the intended source kind.
22
22
8. Tell the user that CCB must be restarted for config changes to take effect.
23
23
24
24
Do not write runtime state, generated memory, provider-state homes, `.ccb/provider-profiles/`, `.ccb/ccbd/`, legacy `.ccb_config/`, or provider-native project dotfiles such as `.codex`, `.claude`, or `.gemini`.
25
25
26
+
By default, configure the current project by writing `.ccb/ccb.config`. Only write `~/.ccb/ccb.config` when the user explicitly asks for a user-level or system-wide default CCB team.
27
+
26
28
Never run `ccb`, `ccb -s`, `ccb kill`, or any restart command as part of this skill workflow. Restarting from inside an active CCB pane can terminate the current session before file edits and validation finish. Finish all file writes and validation first, then tell the user the restart command to run manually.
27
29
28
30
## Interaction Pattern
@@ -153,19 +155,21 @@ python - <<'PY'
153
155
from pathlib import Path
154
156
from agents.config_loader import load_project_config
155
157
result = load_project_config(Path('.'))
156
-
if result.used_default or result.source_path is None:
158
+
if result.source_kind != 'project_config' or result.source_path is None:
157
159
raise SystemExit('ERROR: .ccb/ccb.config was not loaded; write the current config authority before validating')
After editing `~/.ccb/ccb.config` as the user-level default, validate from a temporary directory without a project config and require `source_kind == "user_config"`.
165
+
162
166
Also check:
163
167
164
168
- agent names are valid and not reserved;
165
169
- every configured default agent appears exactly once in the layout;
166
170
-`cmd` is first when enabled;
167
171
- compact/hybrid worktree markers are present on the compact line, not in overlay;
168
-
- validation reports `used_default = False` and a non-empty `source_path`;
172
+
- validation reports the intended `source_kind` and a non-empty `source_path`;
169
173
- no secrets were added unless the user explicitly provided them;
Copy file name to clipboardExpand all lines: inherit_skills/claude_skills/ccb_config/references/ccb-config.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,17 @@
2
2
3
3
## Authority Files
4
4
5
-
`.ccb/ccb.config` is the only user-facing project config authority. When it is missing, CCB uses a built-in default and does not write a new file automatically.
5
+
Effective config precedence is:
6
+
7
+
1. built-in default config from code;
8
+
2. user config at `~/.ccb/ccb.config`;
9
+
3. project config at `.ccb/ccb.config`.
10
+
11
+
Higher layers replace the whole lower-layer config; CCB does not merge partial config documents across layers.
12
+
13
+
`.ccb/ccb.config` is the highest-priority project config authority. When it is missing, CCB uses `~/.ccb/ccb.config` if present, then the built-in default. CCB does not write a new project config automatically.
14
+
15
+
Only write `~/.ccb/ccb.config` when the user explicitly wants a user-level or system-wide default CCB team. For ordinary project setup, write `.ccb/ccb.config`.
6
16
7
17
Do not write `.ccb_config/ccb.config`. That path is legacy residue in older or migrated workspaces. You may read it as migration evidence, but the current config must be created or updated at `.ccb/ccb.config`.
0 commit comments