Skip to content

fix(host): exit 1 from a failed ask, name agent access in a refusal, and tell unknown providers and models apart - #681

Merged
iamnbutler merged 1 commit into
mainfrom
fix-cli-output
Oct 23, 2026
Merged

iamnbutler merged 1 commit into
mainfrom
fix-cli-output

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

The command line's answers now say what happened, so scripts and people can tell.

  • ace ask exits 1 when the run fails or is stopped (help says so). Before, a failed run printed (run ended) and exited 0.
  • A refused ask now reads "Agent access is off in this channel, so only its owner, , can ask its agents." instead of "Only the owner can invoke agents here".
  • --model for ace new and ace model tells three cases apart: "There's no model provider named nope.", "openai has no model named does-not-exist." (provider has a key), and the existing "Add its provider key first." (provider has no key).
  • ace info adds host and gives owner as the GitHub login the app shows, through the running host's roster. It falls back to the Tailscale login when no login is known.
  • ace directory says "This Mac serves it." when it does, then "Synced 3m ago.", "Last sync failed …: ", or "Not synced yet." It reads the running host's directory. A --loopback host or a host that isn't running says it doesn't sync.

Already on main and not changed here: say confirms (#661), and ace desktop/ace agents refuse words other than on/off.

Map: ^592, ^858, ^588, ^867, ^377, ^875, ^881, ^833 (https://ace-map.iamnbutler.pages.nexthub.sh/cli.html)

Smoke: isolated ACE_HOME/config/keychain host from this lane on port 5120, real OpenAI key:

  • ace new|model --model nope/x → no-provider message; openai/does-not-exist → no-model message; google/gemini-2.5-pro (no key) → key message. All exit 1.
  • ace ask smoke "Reply with just the word pong." → pong, exit 0. Stopped mid-sleep 60 with ace stop → exit 1. Host restarted with a bogus OpenAI key → Run failed: OpenAI API error (401)…, exit 1.
  • ace agents smoke off, then ask as another ACE_USER → the new refusal, exit 1.
  • ace info smoke → "host": "natembp", "owner": "iamnbutler" (it was the Tailscale email before).
  • Tailnet host with ACE_DIRECTORY=https://example.invalid → "Last sync failed just now: Could not reach …". With directory-serve on → "This Mac serves it. / Synced just now."; off → "No directory". Loopback host → the loopback line.

Not tried: a real teammate's channel on a second Mac. The relayed ask refusal is the same channel error, and relayed info takes host from the listing.

Built in Ace

No. Made from Claude Code (fix-train worker) outside an Ace channel. Dogfooding gaps are tracked in #5.

…and tell unknown providers and models apart

ace info names the channel's host and its owner's GitHub login, and ace directory
says whether this Mac serves it and when it last synced.
@iamnbutler
iamnbutler merged commit e737b9d into main Oct 23, 2026
1 check passed
@iamnbutler
iamnbutler deleted the fix-cli-output branch October 23, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant