Skip to content

v2.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Aug 08:15
· 10 commits to main since this release
184d157

v2.0.0

The domain release. mcx moves from a single implicit repo, inferred from the daemon's
working directory, to explicit first-class domains — named, registered repositories
that every subsystem partitions by. 77 commits since v1.14.6 (2026-07-13).

Breaking changes

  • New database: mcx.db replaces state.db. Adds a domains table and domain_id
    partitioning across work items, sessions, mail, alias state, the event log, automation
    state, and quota. A one-shot importer migrates existing state.db content on first run
    and ships as the upgrade path; state.db is left byte-frozen, not deleted.
  • mcx scope is retired, superseded by mcx domain add|ls|show|which|rename|rm|import.
  • Most commands now refuse to run outside a registered domain. -d <domain> selects one
    explicitly; ambient commands resolve by walking up from $PWD. mcx monitor keeps its
    documented wide default — omitting -d still shows every domain.
  • mcx claude bye keeps the worktree by default. Pass --clean to remove it.
  • Model tier names (opus, sonnet) pass through verbatim instead of being resolved to
    full model IDs.

Domains

One domain worker per domain, supervised, over a transport-agnostic link. Work items,
agent sessions, mail (user@domain addressing), alias state, the event log, and per-domain
spend tracking are all scoped. Automation dispatchers and GitHub pollers resolve their repo
per domain rather than from the daemon's cwd. Domain add/rename/delete are transactional,
with a CHECK on path shape and typed refusals; a rename migrates stamped mail senders and
an rm that would strand them is refused.

Sessions and spawning

  • GitHub credentials are scoped per spawned session — no child receives the admin token.
  • --profile env bundles for spawned sessions, and scriptable auth-profile switching.
  • The daemon refuses to spawn into a live session's working tree.
  • Claude is re-probed before a blocked spawn, so a patch update no longer needs a daemon restart.
  • The rate-limit flag expires instead of latching for the turn.
  • Quota is snapshotted into profiles and shown on mcx auth ls; quota monitoring works on
    Linux via a non-keychain token source.

Gate and tooling

  • TypeScript 5.9.3 → 7.0.2 (native compiler, ~7.7x faster tsc -b). CI and the engine floor
    move to Bun 1.4.0.
  • am-i-done gets a strict wall-clock deadline with process-tree kill, load-aware lease
    admission, and a 600s default matching CI.
  • The pre-commit hook runs the static gate only — CI owns coverage.
  • $PATH binaries install by atomic copy, never symlink, and record install provenance.
  • Builds embed their source commit, exposed via _metrics build_info.

Also

Per-server rate limiting for tool calls; producer-rendered summary and severity on the event
envelope; a card store with surgical frontmatter writes; guard-reachability rule harness;
tool-wildcard permission rules rejected at parse time; VFS live clone/pull progress and
adaptive Confluence pagination; site retryOn for session-header staleness; OWA per-mailbox
anchoring; TLS cert/key validation.