agent enable: a failed package install is no longer a success - #187
Merged
Conversation
`atomic agent enable` falls back to built-in hooks when the integration package cannot be installed. That fallback is right — turns still get recorded — but it exited 0 and printed the success blurb afterwards, so a partial install was indistinguishable from a whole one. What is actually missing in that state is the agent's Atomic skills and its system prompt. Hook recording still works, which is exactly why the gap survives unnoticed: nothing errors, runs complete, and the agent is quietly less capable than the same agent on the next machine. Now the summary names each agent that fell back and what it lost, and the command exits non-zero. Behaviour change for anything scripting this: a partial install that used to pass will now fail. That is the point, and `|| true` opts out where the fallback is genuinely acceptable. `RemoteError`, not `Internal` — an unreachable package is not a bug in Atomic, and `Internal` tells the user to file an issue.
geekgonecrazy
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
atomic agent enablefalls back to built-in hooks when the integration package can't be installed. The fallback is right — turns still get recorded — but it exited 0 and printed the success blurb after the warning, so a partial install looked like a whole one.What's actually missing in that state is the agent's Atomic skills and system prompt. Hook recording still works, which is why the gap survives unnoticed: nothing errors, runs complete, and the agent is quietly less capable than the same agent on the next machine. That is how it went unnoticed for weeks in practice.
Before — exit 0:
After — exit 4:
RemoteError, notInternal: an unreachable package isn't a bug in Atomic, andInternaltells the user to file an issue.Behaviour change. Anything scripting this will now fail on a partial install where it previously passed. That's the point;
|| trueopts out where the fallback is genuinely acceptable. Flagging it explicitly in case that's too blunt for CI somewhere — happy to put it behind a flag instead.Verified against a real repo: healthy install still exits 0, a forced package failure exits 4 with the block above. Plus 3 unit tests on the error itself,
cargo fmt --all --checkandclippy -- -D warningsclean, 11 tests inagent::enablepass.