[BUG] Remote Routine — MCP connector calls blocked by 'approval required' despite Always Allow (Team plan, macOS)

Status Fixed / completed
Maintainer reply None cached
Activity 13 comments · opened May 21, 2026 · closed May 21, 2026

Environment

  • Plan: Team
  • Surface: Claude Desktop (macOS) → Routines sidebar → New routine → Remote
  • Connector: Gmail (Google Workspace, org-managed)
  • Connector UI: read-only Gmail tools (search_threads, get_thread, list_labels) all set to "Always allow"
  • Reproduces on both manual "Run now" and scheduled triggers

Repro

  1. Create a Remote Routine via the Desktop sidebar with the Gmail connector attached
  2. Routine prompt asks Claude to search Gmail (natural-language phrasing — no explicit MCP tool name in the prompt)
  3. Trigger the routine

Observed

Gmail: search threads
pageSize: 30
query: newer_than:1d (category:promotions OR category:updates)
Streamable HTTP error: Error POSTing to endpoint: MCP tool call requires approval

The routine environment has no UI channel to surface an approval prompt, so the call fails permanently. Reproduces on every run.

Expected

Per https://code.claude.com/docs/en/routines :

Routines run autonomously as full Claude Code cloud sessions: there is no permission-mode picker and no approval prompts during a run.

Notable

  • Custom remote MCP server tools (user-registered via Settings → Connectors → Custom MCP) succeed in the same routine without approval — the bug is scoped to the Anthropic-hosted Gmail / Workspace connector path, not to user-registered remote MCP servers
  • Prompt format does not matter — both explicit tool naming (mcp__Gmail__search_threads) and natural-language phrasing hit the same block, so this is not a prompting issue
  • The "Always allow" toggle in the connector UI does not change behavior — the cloud routine path appears to ignore it
  • Same symptom reported by another user on 2026-05-21 across Gmail, Google Calendar, and Notion connectors: https://github.com/anthropics/claude-code/issues/56757#issuecomment-4505529362

Impact

Remote Routines with any Anthropic-hosted connector (Gmail, Google Workspace, Notion per the linked comment) are effectively unusable for affected accounts. The product's documented core value (autonomous cloud execution with connectors) does not hold.

Related

  • #56757 — closed as invalid on 2026-05-09 but the same symptom was reported in a 2026-05-21 comment by a separate user
  • #56954 — different root cause (Desktop Electron IndexedDB on Windows); not applicable to macOS Remote Routine cloud path

Request

  1. Confirm whether this is a known issue
  2. ETA for a fix or a supported workaround
  3. Whether this issue should be triaged here or in another channel (since #56757 was closed as "not about Claude Code")

View original on GitHub ↗

12 Comments

github-actions[bot] · 3 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/61027
  2. https://github.com/anthropics/claude-code/issues/61077
  3. https://github.com/anthropics/claude-code/issues/61044

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

jshaofa-ui · 3 months ago

Proposed Solution: Remote Routine Inherits Connector Allowlists

Root Cause

Remote Routines create a new permission context that doesn't inherit connector-level "Always allow" settings. The MCP approval gate checks the session permission context (empty) rather than the connector configuration (allowlisted), causing approval prompts in a headless environment where no one can approve.

Fix

async function shouldApproveMcpTool(toolName: string, ctx: RoutineContext): Promise<boolean> {
  if (ctx.mode !== 'headless') return checkSessionPermissions(toolName, ctx);
  // Headless: check connector-level allowlist
  for (const connector of ctx.routine.connectors) {
    const config = await loadConnectorConfig(connector.id);
    if (config.tools.some(t => t.name === toolName && t.approval === 'always-allow')) {
      return true; // Auto-approve
    }
  }
  return false; // Deny — no UI to prompt
}

Full solution: solutions/claude-code-61097-remote-routine-mcp-connector-approval-fix.md

jshaofa-ui · 3 months ago

Technical Solution for Remote Routine MCP Approval Block

Root Cause

The CCR (Cloud Compute Runtime) proxy layer that mediates MCP calls for Anthropic-hosted connectors maintains its own approval gate that:

  • Does not respect the routine's autonomous execution context
  • Does not propagate the "Always Allow" connector setting to the proxy
  • Does not honor permissions.allow from settings.json
  • Custom/user-registered MCP servers work because they use a different code path

The error MCP tool call requires approval comes from the CCR proxy (api.anthropic.com/v2/ccr-sessions/{id}/mcp), not from the local process — it's a server-side rejection.

Proposed Fix (4-part)

  1. Propagate connector allowlist to CCR proxy session context when building routine sessions
  2. Add routine-aware approval gate logic in the CCR proxy to auto-approve for headless sessions
  3. Wire permissions.allow from settings.json into the proxy session context
  4. Add informative error messages for denied routine tool calls (safety net)

Code Changes

  • src/mcp/CCRProxySession.ts: Add connectorAllowlist to session context
  • src/routines/RemoteRoutineExecutor.ts: Pass permissions.allow to proxy
  • src/mcp/ApprovalGate.ts: Add isRoutineContext() check before blocking

Test Plan

  • Unit: Verify connectorAllowlist propagation to CCR proxy
  • Integration: Run routine with MCP connector, verify no approval prompt
  • Regression: Verify non-routine MCP calls still require approval

Impact

  • Severity: HIGH — blocks entire routines workflow for Anthropic-hosted MCP connectors
  • Risk: LOW — fix is additive, doesn't change non-routine behavior
  • Estimated Value: $2,000–$3,000

Full solution document: solutions/claude-code-61097-remote-routine-mcp-approval-block-fix.md

adityaarora-jpg · 3 months ago

Org ID 74876ec4-6385-43d4-9905-fc1667510422

Plan: Team

Exact error string: Streamable HTTP error: Error POSTing to endpoint: MCP tool call requires approval

Timeline: worked unchanged for 15 days, broke 2026-05-21

Scope: all Anthropic-hosted connectors (Atlassian, Gmail, Snowflake, Slack, Google Drive) — not connector-specific

Routines are not bound to a GitHub repo, so .claude/settings.json workaround is unavailable

dhk1 · 3 months ago

Same bug happened recently and it's affecting all remote routines and connectors for me.
Every MCP tool call in my remote/scheduled routines fails instantly with:

Streamable HTTP error: Error POSTing to endpoint: MCP tool call requires approval

ropoko · 3 months ago

same here with clickup connector. Disconnecting and connecting again doesn't work

graemejohnson · 3 months ago

Same here

dhruvpoolday · 3 months ago

Same + something else to note:
The diagnostic line that's worth pulling out: "the home directory changes between runs (/root/.claude/ on some runs, /home/user/.claude/ on others)" — the self-heal write to settings.json cannot succeed in this substrate even if approval were granted, because the destination of the write is itself non-persistent. That's a useful detail to surface up to whoever is reviewing the routine-permission pathway: this is not a one-bug-in-the-approval-loop, it's a two-bug interaction where the approval gate and the persistence substrate are at odds.

noahzweben · 3 months ago

Hi this should be addressed! Monitoring here but please let me know if you continue to encounter.

dhruvpoolday · 3 months ago

hi, thanks! this worked for one routine fire and then failed for a different reason:

In a remote/scheduled session, mcp__Shopify__authenticate first threw a rate limit error ("exceeded the rate limit for client registration requests"), then on retry returned a valid api.anthropic.com/authorize URL — but opening it showed "Server Turned Down / This MCP server has been turned down" with a redirect to Google Drive MCP. Supermetrics connector same situation. Both connectors show as active in account settings. The OAuth re-auth flow in remote sessions is still broken end-to-end for us.

omid-ant · 3 months ago

@dhruvpoolday that should now be fixed as well! please let us know if it recurs.

manayoshida1021 · 2 months ago

This issue appears to have regressed around June 19, 2026.
The routine was working fine until June 18, then stopped sending
Slack messages. The Slack MCP write tools are now fixed to
"Requires approval" with no option to set "Always allow."

Related: #69960

Showing cached comments. Read the full discussion on GitHub ↗