Release Notes
join/reconnect --role refuse to silently re-role a clone already bound to another role.
Field report (boxwood-twist-null): running confer reconnect --role B from inside role A's clone
relabeled the clone to B while keeping A's signing key — so one key backed two role-ids on the
hub, and A's future posts from that clone surfaced under B's name. The prior code only printed a
warning. Now the operation is refused by default with a message that names the bound role and
points at the fix (a separate clone: confer clone <hub> --role B --managed); a deliberate
re-role takes --force (which warns that the key is retained, linking the two role-ids). Both
join and reconnect funnel through one write-side check, so pointing reconnect --hub <PATH>
at another role's clone is refused too. reconnect now also propagates a join precondition
failure instead of printing "✅ reconnected" over a join that didn't happen.
- The guard fails closed: an unreadable / corrupt / role-less
identity.json (e.g. a torn
write from a crash) is refused, not fallen through — only a genuinely absent file is a fresh
clone. identity.json is now written atomically (temp+rename, matching tiers/presence/
keyring), removing the torn-file window that could blind the guard.
identity.json is written before the git-config mutations, so a join that fails partway
never leaves the clone committing as a role confer didn't record.
- The
.git/config.lock contention from a concurrent watch / SessionStart auto-reconnect is now
retried (previously only index.lock was), so the stricter reconnect error propagation can't
turn a transient lock into a hard "no skills, no watch" abort of the auto-heal path.
Install confer-cli 0.6.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/codeshrew/confer/releases/download/v0.6.4/confer-cli-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install codeshrew/tap/confer
Download confer-cli 0.6.4