The v0.0.97 changelog entry landed (#7768), grouping the 43 PRs merged since v0.0.96. We covered much of the security half of that range yesterday — the libssh2 and CPython CVE backports, the claude-code browser-login policy fix — so this entry focuses on what's new since, plus seven further commits that landed on main today.
The headline is provider switching, and it's a two-part fix. nemoclaw inference set was failing outright when a direct compatible provider was absent or its endpoint had changed (#7746). It now inspects the provider binding before route selection, creates and verifies an absent provider before the first route attempt, and commits a verified update for an existing provider only after route selection — so a failure restores the prior selection instead of leaving you between two states. A newly created provider is removed if route selection fails.
The follow-up matters just as much (#7763): review caught that OpenShell was verifying an existing provider's old endpoint before NemoClaw replaced it. NemoClaw now reuses only the exact direct binding recorded for the sandbox, and refuses an endpoint replacement it could not roll back — because OpenShell redacts the previous endpoint, so there'd be nothing to restore. Refusing is the right call here; the alternative is a one-way change that looks reversible.
The rest of the batch:
- Managed MCP discovery accepts case-variant SSE media types (#7760). A spec-compliant Streamable HTTP server returning
Text/Event-Stream; Charset=UTF-8— legal, since media types are case-insensitive and may carry parameters — was breaking tool discovery. The official MCP SDK is pinned to 1.30.0 for its parsed media-type implementation, and a realinitialize→notifications/initialized→tools/listfixture using that exact casing now runs in every reviewed runtime image build. Notably this is a generic contract fix, not a per-provider compatibility shim. - Jetson GPU onboarding passes the DRI render-device group (#7762). Non-root CUDA initialization needs both video and render group membership; onboarding was carrying the former and not the latter. It now discovers real
/dev/dri/renderD*character devices (rejecting symlinks), adds an owner GID only when its group permission actually grants access others don't already have, and passes the numeric GIDs through the existing--group-addrecreation path. Read the honesty note before you count on it: no Jetson/IGX runner was available, so physical IGX Orin validation is still pending and this is the maintainer's best-guess fix. The sandbox CUDA proof stays fail-closed, so an insufficient fix rejects the recreation rather than shipping you a broken sandbox. - A locked Hermes gateway can restart after a managed MCP update (#7761). The root-owned restart controller now recognizes the guard-generated
nemoclaw-hermes-mcp-state-v1record in the strict config hash, while still rejecting malformed, duplicate, unknown, or ambiguous records withGATEWAY_CONFIG_HASH_MISMATCH. Ships with a live regression covering managed add, shields restoration, real restart, integrity verification, and failed-reload rollback — including a scan confirming no bridge secret leaks into raw Hermes files or the startup log. - Deep Agents Code onboarding rejects stale base inventories (#7810). A release base image can carry the expected distribution version but an obsolete security package inventory — which, after yesterday's CVE backports, is exactly the gap that would quietly hand you a vulnerable image. Base images must now match both, and the inventory probe moved into a shared module so the OpenClaw and Deep Agents gates can't drift apart.
- Post-recreate readiness waits aligned to 120s (#7784).
start's post-recreate recovery gave up after 30s whileconnectallowed 120s to prove the same readiness — so on a cold start, recovery would abandon a sandbox thatconnect --probe-onlythen recovered successfully. The maintainer is candid that this reproduced 1-in-12 on a DGX Spark and could not be re-triggered deterministically, so it's a principled budget alignment rather than an empirically-timed value, and the upstream issue stays open.
Also in the v0.0.97 entry: the deferred two-Station vLLM evaluation stays deferred, the experimental Okta runtime-identity reference remains opt-in and outside normal onboarding, and pre-tag validation now derives test ledgers from commit E2E workflows.
Who should care: anyone who has hit inference set failing against a fresh sandbox, or managed MCP servers that connect but list no tools — both were real bugs with fixes now. If you run Jetson or IGX hardware, this is the CUDA fix you've been waiting on, but it's unvalidated on physical IGX Orin, so treat it as a candidate rather than a guarantee.