github nyldn/claude-octopus v9.57.0
v9.57.0 — Command Code provider, selective Fable 5 escalation, and progressive feature disclosure

3 hours ago

Added

  • Progressive feature disclosure. A feature that ships with a real policy question is raised once, at session start after the upgrade that introduced it, instead of waiting for someone to read a changelog and hand-edit an env var. config/features.json is the manifest; decision: required features are offered, decision: none features ship silently on their default and stay settable by env key. Answers are recorded so a question is asked once and never re-asked, the offer is suppressed in non-interactive sessions, and the prompt budget is bounded so an unanswered offer cannot become nagware. /octo:whats-new changes any answer later.
  • Selective Claude Fable 5 escalation (OCTOPUS_FABLE5_ROUTING, default off). Fable 5 can be routed to judgment-heavy work — PRD authoring, definition tradeoffs, cross-vendor tie-breaks — while Opus 5 stays the default everywhere else. At $10/$50 per MTok it is twice Opus 5, so escalation is capped at one dispatch per command and is never automatic.
  • Authorship-aware review (OCTOPUS_REVIEWER_FLIP). When Codex writes the code, review can move to a Claude seat so author and reviewer are different vendors. Note the converse limit: Fable 5 is Anthropic-family like Opus 5, so a Fable review of Opus-authored work is not an independent cross-vendor check.
  • Command Code CLI provider (commandcode, commandcode-research, commandcode-fast) with an isolated environment, JSON result parsing, and role-scoped permission modes. Thanks to @Jhacarreiro.
  • review.finding lifecycle events, and synthesis.start / synthesis.end bracketing the design-review reduce step.

Fixed

  • Global flags placed after the subcommand were silently read as the prompt. orchestrate.sh define --timeout 540 "..." ran a workflow whose task was literally --timeout, discarding the real prompt and reporting success. Now fails loud with the correct invocation order.
  • Helper-shim allowlisting matched the command-string suffix instead of the executable token, so copilot-exec.sh dispatches aborted their phase and agy-exec.sh was rejected whenever dispatch appended arguments.
  • USAGE_FILE was derived before WORKSPACE_DIR was resolved, producing a read-only-filesystem error that failed agent dispatch. Thanks to @zyclope0.
  • stat-based file-age checks were silently broken on Linux — all probed BSD stat -f %m first, but on Linux -f is --file-system and succeeds, so the GNU fallback never ran.
  • Two dead provider seats reported themselves as available and were dispatched into instant failure: agy's account-wide Individual quota reached and gemini-cli's IneligibleTierError from Google's Gemini Code Assist free-tier OAuth sunset.
  • The quota-dead downgrade now applies to every provider, not four of thirteen, and a quota-dead mark expires (OCTOPUS_QUOTA_DEAD_TTL, default 3600s) instead of retiring a seat permanently.

Known issue

Under CLAUDE_PLUGIN_DATA, quota dead-marks written by gemini-exec.sh and agy-exec.sh are written where the reader does not look, so gemini can keep advertising as available and re-trigger the macOS keychain prompt. Fix in flight as #714; migration off the sunset Gemini OAuth tracked in #715.

Full changelog: https://github.com/nyldn/claude-octopus/blob/main/CHANGELOG.md

Don't miss a new claude-octopus release

NewReleases is sending notifications on new releases.