authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-26 20:15:22-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-27 03:15:22+00:00
logcb97415948cc2c0662a5504ccfe7e97981825ed5
tree4411d72cb76687016cc8b270814f934c59a074ad
parentc9a0e8a119271765196dec38ef91395713da4213
signature Signed by PGP key B5690EEEBB952194

fix(server): let agents use simctl and adb alongside device tools (#13908)


3 files changed, 4 insertions(+), 3 deletions(-)

apps/server/src/mcp/toolkits/device/handlers.ts+1-1
......@@ -59,7 +59,7 @@ export function agentDeviceQuickStart(
5959 ` ${executable} screenshot /tmp/shot.png ${target} # or call device_screenshot`,
6060 ` ${executable} install <app> <path-to-.app-or-.apk> ${target}`,
6161 `Prefer snapshot refs over coordinates. Run ${executable} help for workflow guides and ${executable} <command> --help for flags.`,
62 "Do not call simctl, adb, xcrun, or serve-sim directly while these tools are attached; use agent-device.",
62 "Prefer agent-device for driving this device. simctl, adb, and xcrun remain available for anything it does not cover.",
6363 "For remote hosts, arrange builds, app installation, and any Metro reverse forwarding yourself. T3 provides discovery, streaming, and control only.",
6464 "Keep the returned --config and --session flags on every command. Other hosts can be used concurrently; opening one does not switch these commands.",
6565 platformNotes,
apps/server/src/provider/CodexDeveloperInstructions.ts+1-1
......@@ -12,7 +12,7 @@ Do not switch to global browser skills, Chrome, Node REPL browser automation, st
1212
1313const T3_CODE_DEVICE_TOOL_INSTRUCTIONS = `## T3 Code devices
1414
15The \`t3-code\` MCP server also exposes \`device_*\` tools for iOS Simulators and Android Emulators on this environment. For mobile verification, call \`device_list\`, then \`device_open\` so the user can watch the device in their Device panel; its result explains how to drive the device. Driving happens through the \`agent-device\` CLI, which is on PATH. Keep the host config and session flags returned by \`device_open\` on every command so concurrent devices stay independent: prefer \`agent-device snapshot -i\` refs over coordinates, and use \`device_screenshot\` when you need to see the screen. Do not call simctl, adb, xcrun, or serve-sim directly while these tools are present. If \`device_list\` reports a platform as unavailable, say so instead of trying another route.`;
15The \`t3-code\` MCP server also exposes \`device_*\` tools for iOS Simulators and Android Emulators on this environment. For mobile verification, call \`device_list\`, then \`device_open\` so the user can watch the device in their Device panel; its result explains how to drive the device. Driving happens through the \`agent-device\` CLI, which is on PATH. Keep the host config and session flags returned by \`device_open\` on every command so concurrent devices stay independent: prefer \`agent-device snapshot -i\` refs over coordinates, and use \`device_screenshot\` when you need to see the screen. Prefer these tools and \`agent-device\` for opening and driving devices. Platform tools such as \`xcrun simctl\` and \`adb\` remain available for anything they do not cover, such as builds, logs, or port forwarding. If \`device_list\` reports a platform as unavailable, say so.`;
1616
1717export interface T3CodeToolAvailability {
1818 readonly browser: boolean;
docs/internals/devices.md+2-1
......@@ -69,7 +69,8 @@ already-running agent without the CLI.
6969How to drive a device is returned from `device_open`, not kept in an
7070always-loaded prompt or skill: it costs nothing in threads that never open a
7171device and cannot drift from the pinned CLI version. The always-on prompt block
72is a few lines that point at the tools and forbid raw `simctl` and `adb`.
72is a few lines that point at the tools and prefer them over raw `simctl` and
73`adb`, which stay available for what the tools do not cover.
7374
7475## The viewer decodes both vendored protocols
7576