0.6.6
Release Notes
Security + robustness release from a multi-agent review sweep. No new commands; existing behavior on
success paths is unchanged.
- SECURITY — closed a card-corruption identity hijack. A hub git-writer could silently re-key a
role (steal its identity) by first committing one malformed/degenerate line into itsroles/<id>.md
card, which made the write-side 1:1 key guard read the card as "no key published." Fixed and
hardened across five adversarial red-team rounds:parse_cardfails closed on unparsable
frontmatter; a single sharedroster::classify_pubkeyclassifiespubkeyfor BOTH the read/pin
side and the write guard (so apubkey: null/list/number/bareword can't be read one way by one and
another by the other); the "was this role ever keyed?" gate parses each historical revision instead
of grepping diff text (defeating a YAML-anchor evasion); both card parsers strip a leading UTF-8 BOM.
Separately, peer-authored card fields (display/aliases/host) are now sanitized before they
reach the terminal or the agent's SessionStart context (terminal-control / prompt-injection). - The
append/integrateop is now bounded by one overall wall-clock deadline (op_deadline,
CONFER_OP_BUDGET_SECS, default 45s). The fetch, lock-wait, and reconcile-push phases each had a
budget but nothing bounded their SUM, so under contention (a watcher'sintegrateholding the lock
while anappendwaited, then hitting its own push race) they stacked to a ~100s hang that never
errored — it just sat. Now the total is capped and the op defers cleanly. - Silent read failures are now surfaced (the "looks-like-success" class):
confer hubs/clones
(aclonehome::listread_direrror no longer yields a confident-but-partial empty),who/fleet
(presencenow checks the fetch +for-each-refexit, so it can't report wrong liveness on a git
read failure),roster(an unreadableroles/dir warns), the poll/watch reactive path (a
history-present-but-tree-absent message warns instead of vanishing), andinit --managed(a failed
reactive-layer wiring no longer prints "✅ fleet ready" over a watch that isn't set up). tiers.jsonwrites are now serialized with the same state lockkeyring/presenceuse
(lost-update fix).- Declared MSRV corrected to 1.82 (the code uses
Option::is_none_or); a from-source build on the
previously-declared 1.74 would fail to compile.
Install confer-cli 0.6.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/codeshrew/confer/releases/download/v0.6.6/confer-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install codeshrew/tap/conferDownload confer-cli 0.6.6
| File | Platform | Checksum |
|---|---|---|
| confer-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| confer-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| confer-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| confer-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |