At v0.0.5, a routine run is headless: server/src/routines/run-turn.ts:465-467 passes tools: [] with the comment that a headless turn has no browser to register frontend tools. But the Bot is still handed the computer guidance:
server/src/index.ts:646 passes config.computer ? COMPUTER_GUIDANCE : undefined into the routines path, and AGENT_COMPUTER_URL is baked into the image (Dockerfile:184), so config.computer is always truthy in the published image.
agent-langgraph/src/history.ts:25 prepends COMPUTER_GUIDANCE unconditionally for managed coworkers.
server/src/copilot.ts:1099-1103 states the intended rule for the chat path: "Absent computer, absent guidance: a Bot is not told about hands it has not got." Routines get the opposite. Observed effect on a hosted deployment (routines fired from a cron container of the same image): a scheduled instruction that asks for a web check produces an apology narrated as if the browser had failed, rather than a clear "this routine cannot browse". A text-only routine works fine and correctly lists only its plugin tools.
Suggested fix: pass undefined for the guidance on the routines path (and skip it in history.ts when the run carries no computer tools), so the model knows it is text + plugin tools only. Happy to open a PR if you agree with the direction.
Found while building the Railway template (see the Deploy-on-Railway PR).
At
v0.0.5, a routine run is headless:server/src/routines/run-turn.ts:465-467passestools: []with the comment that a headless turn has no browser to register frontend tools. But the Bot is still handed the computer guidance:server/src/index.ts:646passesconfig.computer ? COMPUTER_GUIDANCE : undefinedinto the routines path, andAGENT_COMPUTER_URLis baked into the image (Dockerfile:184), soconfig.computeris always truthy in the published image.agent-langgraph/src/history.ts:25prependsCOMPUTER_GUIDANCEunconditionally for managed coworkers.server/src/copilot.ts:1099-1103states the intended rule for the chat path: "Absent computer, absent guidance: a Bot is not told about hands it has not got." Routines get the opposite. Observed effect on a hosted deployment (routines fired from a cron container of the same image): a scheduled instruction that asks for a web check produces an apology narrated as if the browser had failed, rather than a clear "this routine cannot browse". A text-only routine works fine and correctly lists only its plugin tools.Suggested fix: pass
undefinedfor the guidance on the routines path (and skip it inhistory.tswhen the run carries no computer tools), so the model knows it is text + plugin tools only. Happy to open a PR if you agree with the direction.Found while building the Railway template (see the Deploy-on-Railway PR).