fix(acpmux): guard sidebar group labels and empty groups

Merged
TE
6d ago
+82-9

Problem

acpmux new --group passes a caller string into cmux agent open, which can create persistent sidebar state. Blank/id-shaped labels can produce raw-id groups.

Leo asked us to audit these surfaces because “we ought to audit the skills/tools/commands/prompts/mcps we have all around cmux-next as well as acpmux and make sure stuff is clear and as we expect and we have good recovery and good error messages and that stuff is concise but informative”.

Change

  • Reject blank, UUID, and cmux object-id-shaped --group values before session/new, with an exact omit/use-a-label recovery.
  • Reject the same values at the cmux app action boundary.
  • Document that --group is opt-in persistent app state, does not move focus, and give exact list/remove/delete recovery commands.
  • Add focused Rust and Swift regression tests.

Validation

No capture: the app change only refuses id-shaped or blank group labels at the action boundary (an error string to the caller); nothing rendered changes.

  • git diff --check
  • cargo fmt --manifest-path cmux-tui/Cargo.toml --all
  • Rust and Swift tests are routed to the managed fleet per repository policy; no local native build was run.

Changelog

  • Fixed: reject object-id and blank sidebar group labels and document how to recover an unwanted group.

State: scoped
Owner: Codex 01a16a55-c3f2-79d1-8872-cb25f230352a
Head: d7ecc35d705 (merged base; dropped the pre-observation workspace guard per the BLOCK at 2e1c589e)
Next: independent review and exact-head fleet checks
Evidence: focused unit tests added; formatting and diff checks passed
Stop: none

Agent-Session: https://cmux.com/deeplink/agent?harness=codex&session=01a16a55-c3f2-79d1-8872-cb25f230352a&host=huge-blue


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Rejects acpmux new --group values that are blank or look like cmux object ids (grp_*, ws_*, UUIDs), so automation retries can't create persistent sidebar groups titled with raw ids.

Also documents that --group is opt-in app state that doesn't move focus, with recovery commands for unwanted placements.