The managed-MCP servers that landed on July 4 got a substantial reliability pass. If you added an MCP server with NemoClaw's new mcp add|list|status|restart|remove lifecycle, #6261 makes that state far harder to corrupt or drift. What changed:
- Fail-closed version gate before every mutation: an exact, uncached
openshell --versionprobe now runs before any MCP provider or credential change. A missing, failed, malformed, or mismatched probe fails closed — the mutation is rejected and no command output is exposed. This binds credential-boundary validation to the exact host CLI version so a drifted or spoofed OpenShell can't slip a change through. - Canonical
intendedvsappliedstate: NemoClaw persists a credential-safe MCP digest as bothintendedandapplied. Theappliedstate is committed only after a healthy gateway reload, and if anything fails, rollback restores both the config and the integrity snapshot. Half-applied MCP config no longer sticks. - Full lifecycle reconciliation: startup, restart, resume, rebuild, status, and recovery all reconcile against the persisted managed intent — including removal tombstones, so a server you removed stays removed across a rebuild and its retired route stays denied. Each mismatch surfaces actionable, fail-closed guidance instead of silently healing.
- No back-door writes: generic config writes can no longer change
mcp_servers, and malformed or stale integrity state is rejected rather than blessed. This closes the configuration-drift gap tracked in #6257 and implements the host-side portion of #6256.
Who should care: anyone running MCP servers under NemoClaw. Nothing changes in the commands you type — this is behind-the-scenes robustness that keeps managed MCP state consistent across restarts and rebuilds and keeps raw credentials out of sandbox files and diagnostics. NemoClaw still runs no MCP proxy of its own; enforcement stays native OpenShell protocol: mcp policy.
The rest of NemoClaw's week on main — roughly ten commits (#6288, #6286, #6285, #6284, #6282, #6281, #6280, #6279, #6276, #6233) — was internal test-performance work (reducing subprocess isolation across onboarding, rebuild, sandbox-lifecycle, and CLI-dispatch suites), CI release-labelling workflows, and a non-blocking maintainer-policy advisory. None of it changes command, config, or runtime behavior.