Repository navigation
Release 0.4.0: gateway Auto-mode arbiter, GPT-6.1 Terra and Gemini 4 Argon - #48
Merged
Merged
Conversation
- Codex now lists gpt-6.1-sol first, so it is the multi-openai default and leads the OpenAI picker rows; gpt-6-astra stays selectable. - Zen gains minimax-m3 (open-weight, text only; it served a live text request on 2026-10-14 and ignored an attached image). kimi-k2.6 answers "Endpoint is unavailable" and Qwen3.8 and Mistral Large 4 are closed-weight, so they are not added. - The MULTI_CURSOR_EXTRA_MODELS help text names Grok 4.7, the row the Cursor picker already shows. - A test pins that a newer Gemini generation (gemini-4-argon) becomes the Antigravity default once agy serves it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EydnYh64eSL17m398TTtu7
- A plugin agent whose frontmatter fails strict YAML (an unquoted `: ` in a description, as in pr-review-toolkit's silent-failure-hunter) is reparsed with its plain top-level values quoted, which Claude Code also accepts. - An agent that still cannot be read keeps its name with a nativePermissionError, reported once on stderr: only native workers of that type are refused. Previously the error emptied the whole plugin inventory and made checkHarnessSettings refuse every native harness run. - An enabled agy or Grok CLI that cannot list models (for example, not signed in) now warns and drops only its own rows instead of aborting the launch. Fixes #45 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EydnYh64eSL17m398TTtu7
Harness replies carry only rows for finished native actions and the hand-back; the harness applied the prompt-boundary mode itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
A Claude reply without safeguard_results latches Claude Code to local classification for the whole session, so workers stopped carrying safeguards and the plan-mode OpenAI worker case reached the stub's classifier instead of the gateway verdict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
…ts live The reviewer now receives auto_mode and permission rules from the request's classifier context, so settings-level hard_deny/allow rules bind OpenAI actions as they bind Claude's. The live auto-mode check now asserts that server verdicts decide every Bash call with no local classifier request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
Claude Code's Agent schema admits only Claude aliases, so the tool.call hook removed a provider model from Agent calls. Claude Code treats any hook rewrite of a not_flagged call as server_input_rewritten and runs a billed local classifier, one per named-model spawn. The gateway now removes the model from Claude passthrough and gateway-built replies before Claude Code sees them, records it by tool_use id, and agent.spawn resolves it from the record. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
Since 2.1.311, Claude Code asks for a compaction summary again when the reply has no <summary> block, so the stub summaries now carry one. The interactive tests pressed Enter while a dialog still ignored keys, or before the paste debounce settled. They now retry until the dialog closes or the prompt leaves the input box. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
Stopping a Cursor, Antigravity or Grok worker aborts its exchange, but the lease is released only after the run records its interruption. A message sent in that window was refused as busy, and the worker failed. A lease now carries its turn's signal. The next turn waits, bounded, for an aborted holder to release; a live holder is still refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
npm run release -- <version> --summary "<line>" sets every manifest version, the lockfile root, the ~<version> multi-core pins and the Codex client version, and renames ## Unreleased to the dated release section with the summary line under it. It refuses non-semver, non-increasing versions and a missing or empty Unreleased section, and writes nothing when it refuses. npm run check now runs check:versions, which fails when any field, pin or the current CHANGELOG section disagrees with package.json. A new release workflow tags v<version> on main when the tag is missing and publishes the GitHub release titled from the summary line, with the section as notes. Run for 0.4.0: gateway Auto-mode arbiter, GPT-6.1 Sol by default and the #45 startup fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
… 4 Argon Codex's live model/list serves gpt-6.1-terra on ChatGPT plans, so the OpenAI Terra row moves off gpt-5.6-terra. agy models lists gemini-4-argon, which the version-ranked Antigravity default already picks; a unit test pins that a new generation without a Pro suffix outranks 3.8 Pro. Docs examples follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn
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.
Summary
Auto mode on a Claude subscription runs Anthropic's server-side check whenever
ANTHROPIC_BASE_URLpoints at the gateway. When a reply has no verdict, Claude Code falls back to its local classifier, which is billed as token usage. A reply that never carriessafeguard_resultsalso locks the session onto that local classifier. Multi now acts as the arbiter itself: every tool call it serves gets an evaluated verdict before the reply finishes.autoModeand permission rulesflagged.approval.ts/tool-observer.ts/permission-hook.ts/safeguards.ts, and the/multi/permissionroute.safeguard_resultsas the real API does.Closes #20.
This PR also contains the two unmerged
fix/models-and-issue-45commits (GPT-6.1 Sol and #45).Verification
npm run check: 630/630, no DEP0190npm run test:mod: 95/95test:e2e: 115 pass. The one failure, "interactive plan: approve ExitPlanMode", also fails on the base commit under Claude Code 2.1.310.test:live:auto-modepassed for sonnet-main, gpt-6-luna-main and gpt-6-luna-worker, each allowing one command and denying another, with zero local Bash classifier requests and no latch.test:live:reviewerpassed.Agent model naming
Claude Code's Agent schema accepts only Claude aliases. Multi used to remove a provider
model(for examplegpt-6-luna) in atool.callhook. Claude Code treats a hook rewrite of anot_flaggedcall asserver_input_rewrittenand runs one billed local classifier per spawn. The gateway now removes the model from Agent calls tomulti-*worker types before Claude Code sees the reply. This covers Claude passthrough SSE/JSON and gateway-built replies. The gateway records the model bytool_useid, andagent.spawnresolves it from that record. This is a narrow, documented exception to byte-for-byte Claude passthrough.Live result: named-model spawns from both Claude and OpenAI main loops now trigger 0 local classifier requests (previously 1). Worker hand-backs were already free, because in auto mode workers report through
SubagentHandback, which receivesnot_flagged.Local e2e on Claude Code 2.1.311 passes 118/118 after 0f0a46f, which updates the test stubs for 2.1.311 (
<summary>blocks, retrying dialog keys). 46e1c7a fixes a real race in which a message sent right after stopping a native worker could fail.Release 0.4.0
Merging this PR publishes v0.4.0. It also contains the GPT-6.1 Sol and #45 commits from
fix/models-and-issue-45.npm run release -- <version> --summary "<line>"sets every manifest version, the~x.y.zpins, the lockfile and the Codex client version, and turns## Unreleasedinto a dated section.npm run check:versions, run bynpm run check, fails when any of those disagree..github/workflows/release.ymlcreates thev<version>tag and the GitHub release when that version reachesmainand has no tag yet. It takes the title from the CHANGELOG summary line and the notes from that section.gpt-6.1-terra, which Codex's livemodel/listlists, and Antigravity workers default togemini-4-argon(fromagy models).🤖 Generated with Claude Code
https://claude.ai/code/session_016nFcG3gv5jZ5UkvyRDvdrn