Summary
A scheduled cloud Routine (Scheduled Cloud Agent, created via the /schedule flow / RemoteTrigger API) with MCP connectors attached silently fails to actually execute an MCP tool call that has a real side effect (specifically Gmail → send_message), while the routine run is still reported as ROUTINE_RUN_STATUS_SUCCEEDED with failure_reason: ROUTINE_RUN_FAILURE_REASON_UNSPECIFIED. There is no error surfaced anywhere in the API response, and no email is ever sent.
Environment
- Feature: Routines / Scheduled Cloud Agents (
claude.ai/code/routines, created via RemoteTrigger create/update)
- Model:
claude-sonnet-5
- Environment: default (
anthropic_cloud)
- MCP connectors attached to the routine: two
claude.ai connectors (one email-sending connector, one data-retrieval connector), both confirmed connected and working outside of Routines
- Client: Claude Code (claude.ai), session created 2026-09-28
Steps to reproduce
- Create a routine with
job_config.ccr.mcp_connections set to two working MCP connectors (a data-source connector and an email-sending connector), and a prompt instructing the agent to: (a) fetch some data via the data-source connector, (b) compose a message from it, (c) send it via the email connector's send_message-equivalent tool.
- Trigger the routine (
run_once_at a few minutes out, or action: "run").
- Poll
RemoteTrigger action: get — the run completes with status: ROUTINE_RUN_STATUS_SUCCEEDED, failure_reason: ROUTINE_RUN_FAILURE_REASON_UNSPECIFIED, and a finished_at timestamp.
- No email is received. No error is visible anywhere in the trigger/run metadata returned by the API.
What I tried to isolate the cause
- Confirmed the email MCP connector works correctly when called directly, interactively, in an ordinary (non-Routine) Claude Code session with the same account/connector — the email is sent and received immediately.
- Ran the exact same task (fetch record via connector A, generate content, send via connector B's send tool) manually in an interactive session, using the identical underlying MCP tools — it worked on the first try.
- Hypothesized the routine's
session_context.allowed_tools (which I had set to ["Bash"] only) might be gating MCP tool calls too, since Routines are the only place I've seen an explicit allowed_tools allowlist required alongside mcp_connections. Updated allowed_tools to explicitly include the fully-qualified MCP tool names (e.g. mcp__<connector-name>__<tool>), and re-ran the routine. Still SUCCEEDED, still no email sent.
- Explicitly instructed the routine's prompt: "if any MCP tool call fails or is denied, do NOT finish silently — report the exact tool and error in your final message." The run still completed successfully with no visible complaint and no email.
- I could find no tool or API (in the standard Claude Code toolset, including
RemoteTrigger, TaskGet/TaskOutput, and the MCP resource-listing tools) that lets me read the actual transcript/message history of a Routine's cloud session (cse_... session id) to see what the agent actually attempted and what error (if any) it received from the MCP tool call. This made it impossible to self-diagnose beyond the isolation test above.
Impact
This makes Routines currently unreliable/unusable for any workflow whose entire purpose is an MCP connector side effect (sending an email, creating a record, posting a message, etc.), because:
- The failure is completely silent — the routine reports success even though nothing happened.
- There's no way for a user (or an assisting Claude Code session) to inspect what happened inside the routine's cloud session to diagnose further.
Ask
- Please confirm whether this is a known limitation/bug with MCP tool execution specifically inside Routines/CCR cloud sessions (as opposed to interactive sessions), and if so, what's needed in
job_config to make MCP connector tool calls actually execute.
- Consider exposing a way (API or tool) to read a Routine run's session transcript, so users/agents can self-diagnose failures like this one without needing platform-side log access.
Happy to provide the routine ID / session IDs from my run privately if useful for debugging — omitted here since this is a public issue.
Summary
A scheduled cloud Routine (Scheduled Cloud Agent, created via the
/scheduleflow /RemoteTriggerAPI) with MCP connectors attached silently fails to actually execute an MCP tool call that has a real side effect (specificallyGmail→send_message), while the routine run is still reported asROUTINE_RUN_STATUS_SUCCEEDEDwithfailure_reason: ROUTINE_RUN_FAILURE_REASON_UNSPECIFIED. There is no error surfaced anywhere in the API response, and no email is ever sent.Environment
claude.ai/code/routines, created viaRemoteTriggercreate/update)claude-sonnet-5anthropic_cloud)claude.aiconnectors (one email-sending connector, one data-retrieval connector), both confirmed connected and working outside of RoutinesSteps to reproduce
job_config.ccr.mcp_connectionsset to two working MCP connectors (a data-source connector and an email-sending connector), and a prompt instructing the agent to: (a) fetch some data via the data-source connector, (b) compose a message from it, (c) send it via the email connector'ssend_message-equivalent tool.run_once_ata few minutes out, oraction: "run").RemoteTrigger action: get— the run completes withstatus: ROUTINE_RUN_STATUS_SUCCEEDED,failure_reason: ROUTINE_RUN_FAILURE_REASON_UNSPECIFIED, and afinished_attimestamp.What I tried to isolate the cause
session_context.allowed_tools(which I had set to["Bash"]only) might be gating MCP tool calls too, since Routines are the only place I've seen an explicitallowed_toolsallowlist required alongsidemcp_connections. Updatedallowed_toolsto explicitly include the fully-qualified MCP tool names (e.g.mcp__<connector-name>__<tool>), and re-ran the routine. StillSUCCEEDED, still no email sent.RemoteTrigger,TaskGet/TaskOutput, and the MCP resource-listing tools) that lets me read the actual transcript/message history of a Routine's cloud session (cse_...session id) to see what the agent actually attempted and what error (if any) it received from the MCP tool call. This made it impossible to self-diagnose beyond the isolation test above.Impact
This makes Routines currently unreliable/unusable for any workflow whose entire purpose is an MCP connector side effect (sending an email, creating a record, posting a message, etc.), because:
Ask
job_configto make MCP connector tool calls actually execute.Happy to provide the routine ID / session IDs from my run privately if useful for debugging — omitted here since this is a public issue.