From 8001f47e262ab40ea87678df0837c73e0915ff35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Thu, 24 Sep 2026 13:53:20 +0100 Subject: [PATCH] fix(launch): el passthrough del usuario va DELANTE, o computer-use no existe (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `claudemesh launch -- --computer-use-mcp` daba `error: unknown option`, y parecía que mesh y computer-use fuesen incompatibles. No lo son. Algunos flags de Claude Code solo se reconocen en la PRIMERA posición de argv. Matriz de 8 combinaciones contra claude 2.1.280: --computer-use-mcp --resume OK --computer-use-mcp --dangerously-skip-permissions OK --dangerously-skip-permissions --computer-use-mcp unknown option --resume --computer-use-mcp unknown option --dangerously-load-development-channels … --flag unknown option Da igual QUÉ flag vaya delante. Como `claudeArgs` ponía `...filtered` al final —detrás de dev-channels, --session-id, --resume y --dangerously-skip-permissions— el passthrough caía siempre en la posición donde no funciona. Verificado por efecto tras el cambio, no por el `ok` del build: el argv real de un lanzamiento es ahora claude --computer-use-mcp --dangerously-load-development-channels \ server:claudemesh --session-id … --dangerously-skip-permissions sin error de parseo, con la sesión conectada al mesh y respondiendo DMs. Siete de las ocho líneas añadidas son comentario a propósito: el orden de ese array es load-bearing y no se ve que lo sea. Quien lo reordene «por limpieza» rompe computer-use sin que falle ningún test. 150 tests · tsc limpio. --- apps/cli/src/commands/launch.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/cli/src/commands/launch.ts b/apps/cli/src/commands/launch.ts index 7400c50..76c971a 100644 --- a/apps/cli/src/commands/launch.ts +++ b/apps/cli/src/commands/launch.ts @@ -978,6 +978,14 @@ export async function runLaunch(flags: LaunchFlags, rawArgs: string[]): Promise< // session-token registration could include it. Reuse here. const claudeArgs = [ + // `filtered` va DELANTE de todo a propósito. Algunos flags de Claude Code + // solo se reconocen en la PRIMERA posición de argv: `--computer-use-mcp` + // parsea bien como primer argumento y da `unknown option` con CUALQUIER + // flag por delante —dev-channels, --dangerously-skip-permissions o + // --resume, da igual cuál— (comprobado 2026-09-23 contra claude 2.1.280, + // matriz de 8 combinaciones). Mientras el passthrough del usuario fuese al + // final, computer-use era inalcanzable desde claudemesh. + ...filtered, "--dangerously-load-development-channels", "server:claudemesh", ...(passSessionIdFlag && claudeSessionId ? ["--session-id", claudeSessionId] : []), @@ -985,7 +993,6 @@ export async function runLaunch(flags: LaunchFlags, rawArgs: string[]): Promise< ...(args.continueSession ? ["--continue"] : []), ...(args.skipPermConfirm ? ["--dangerously-skip-permissions"] : []), ...(args.systemPrompt ? ["--system-prompt", args.systemPrompt] : []), - ...filtered, ]; // Resolve the full path to `claude` — when launched from a non-interactive