Changed
- The oam floor moves from 0.18.0 to 0.19.1, so the
tailscale-mcplauncher no longer runs the server on oam 0.18.x or 0.19.0. 0.19.1 is verified on the installed binary (oam 0.19.1) through the launcher withOAM_BINpointing at it andTAILSCALE_MCP_RUNTIME=oam: a full MCP handshake listing all 98 tools and all 4 resources,tailscale_tool_groupsanswering, a call with invalid arguments returning the same error, and the whole session byte-identical to the same session on Node, with no non-JSON line on stdout. The same session answers fromoam run bin/tailscale-mcp.mjs(in-process), fromoam run src/index.ts(no build step), and withTAILSCALE_MCP_SANDBOX=1. An oam below 0.19.1 is handled as any below-floor oam: Node underauto, an error underTAILSCALE_MCP_RUNTIME=oam. Runoam self-update. TAILSCALE_READONLY,TAILSCALE_LOCAL_CLI,TAILSCALE_REQUIRE_APPROVAL,TAILSCALE_DEBUGandTAILSCALE_MCP_SANDBOXaccept1ortruein any case, with surrounding whitespace ignored. cmd.exe'sset TAILSCALE_READONLY=1 && ...stores"1 ", which the old exact compare read as off -- the security opt-in failed open without a word.TAILSCALE_READONLYandTAILSCALE_MCP_SANDBOXnow print one stderr warning when set to any other non-empty value (yes,on), since the guard is then off.TAILSCALE_MCP_RUNTIMEis trimmed too, so"node "selects Node instead of being warned about and treated asauto.
Fixed
- The local-CLI tools pass
windowsHide: truewhen they run thetailscalebinary, as the launcher already did for its own spawns, so a server under a GUI client on Windows no longer flashes a console window per call. scripts/check-oam-floor.mjsruns from a junctioned or symlinked checkout. It comparedprocess.argv[1]with its own module URL, which Node realpaths and argv[1] is not, so through a link it never ran its checks and exited 0 in silence. Both sides are now realpath'd. Release tooling only.