Built-in profiles migrated to registry packs #780
lukehinds
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This page explains a change in nono v0.43 that may affect commands you've been running. If your workflow stopped working after upgrading, this is probably why.
What changed
In v0.42 and earlier, a few profiles —
claude-code,codex, and the matching agent integrations (Claude Code plugin wiring, Codex hooks) — were compiled directly into thenonobinary. You could runnono run --profile claude-code -- claudeon a fresh install with nothing else set up.In v0.43 those built-in profiles are removed. The same content now ships as registry packs:
always-further/claudeprovides theclaudeprofile (formerlyclaude-code) plus the Claude Code plugin.always-further/codexprovides thecodexprofile plus the Codex plugin.always-further/openclawprovides theopenclawprofile plus the openclaw plugin.The first time you run
nono run --profile <name> -- ...for one of these names, nono notices the profile isn't installed locally and asks whether to fetch the pack from the registry:Accepting installs the pack. Subsequent runs are silent.
Why
Two practical reasons:
nonoitself. Claude Code, Codex, and others ship breaking changes on their own schedules. When the integration logic was inside thenonobinary, every one of those changes needed anonopatch release to keep up. Packs ship independently from the agent's own repo, so updates land without a CLI release.nonocodebase doesn't carry per-agent knowledge anymore. The pack model letsnonostay focused on the sandbox primitive itself — the agent-specific code lives next to the agent.That's the whole motivation. There's no behaviour change inside the sandbox.
How this might impact you
You upgrade and run a command that used to work
You'll see the install prompt above. Press
Yand the pack is fetched, verified, and installed. After that, the same command works on every subsequent run with no prompt.--profile claude-codecontinues to work after install — the pack ships an alias from the legacy name to the canonicalclaude. You can also start using--profile claudegoing forward.Your custom profile extends
claude-codeIf you have something like:
{ "extends": "claude-code", "meta": { "name": "my-claude" }, ... }nono run --profile my-claude -- ...will trigger the same install prompt for the inherited base, then resolve normally. Your custom profile doesn't need any changes —extends: "claude-code"keeps working through the alias.You run in CI or any non-TTY environment
The prompt can't be answered, so nono prints a hint and exits cleanly:
Two ways to fix the CI job:
nono pull always-further/claude(and/oralways-further/codex) as a setup step beforenono run, orNONO_AUTO_MIGRATE=1in the job environment so the install happens automatically on first use.NONO_NO_MIGRATE=1does the opposite — suppresses the prompt entirely and fails withProfile not found. Useful if you want CI to fail loudly when a pack is missing rather than auto-install.You don't want the prompt and don't want to install the pack
You can write your own profile from scratch and skip the official pack:
Profiles in
~/.config/nono/profiles/shadow registry packs of the same name and never trigger the prompt.You need to pin to a specific version
The version is recorded in
~/.config/nono/packages/lockfile.jsonand won't change until you re-pull.You need to remove an installed pack
The wiring directives that were applied at install time (symlinks, JSON entries in agent config files, etc.) are reversed. Your custom profiles in
~/.config/nono/profiles/are not touched.You're offline or the registry is unreachable
The migration prompt requires a registry round-trip to fetch the pack. If you're offline, the install fails. There's no offline fallback to a built-in copy any more — the built-ins really are gone.
If you regularly work offline, pull the packs once while online and they'll stay installed.
If something doesn't work
The change is large enough that we expect some scenarios we haven't covered. Please file an issue if you hit any of these:
nono remove.Issue template:
https://github.com/always-further/nono/issues/newUseful information to include:
nono --version)nono list --installedoutput~/.config/nono/packages/lockfile.jsonif relevantnono pull --forceReverting to v0.43
If the new flow is blocking work and you need to keep moving while we resolve an issue, downgrade:
This is a temporary mitigation, not a long-term path — v0.43 is no longer the supported release. Please open an issue describing what's blocking you so we can fix it on
main.Beta Was this translation helpful? Give feedback.
All reactions