{"version":"2.1.239","anchor":"remote-control-workers-can-be-handed-mcp-config-and-a-system","canonical_anchor":"remote-control-workers-can-be-handed-mcp-config-and-a-system","heading":"Remote Control workers can be handed MCP config and a system prompt by the daemon, switched off in this build","tier":"soon","area":"Remote Control","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.239\/e\/remote-control-workers-can-be-handed-mcp-config-and-a-system","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.239","markdown":"### Remote Control workers can be handed MCP config and a system prompt by the daemon, switched off in this build\n\nRemote Control workers could receive MCP config and prompts from the daemon, but no session does.\n\n**What**\n\nA complete path exists for a Remote Control session to arrive carrying MCP server config and extra CLI arguments, have the daemon write them to a locked-down temp directory and pass them to the worker process. Every call into it sits behind a check whose body returns false, so on this build no session config is ever built and neither new environment variable is ever set.\n\n**Details**\n\n- The session envelope fields are `mcp_config` (base64) and `claude_code_args`; only `model`, `fallback-model`, `effort` and `disallowed-tools`\/`disallowedTools` are accepted, and anything else is counted and dropped.\n- Of the servers in the config, only a single HTTP server on the bridge's own origin would be honoured; the rest are counted and ignored, with a rejection logged as \"[bridge:server-config] meta url does not name the meta mount on the bridge origin\".\n- Files are written mode 0600 with exclusive-create, into a spawn root whose owner and mode are checked first, and the directory is deleted when the session closes.\n- The worker is marked with `CLAUDE_CODE_BRIDGE_MCP_CARRIER` (value `1`, rewritten to `spent` so that grandchildren classify as `descendant` and get no server-delivered servers) and `CLAUDE_CODE_BRIDGE_PROMPT_SHA256`.\n- The child re-hashes the prompt file it was given and refuses it on mismatch: \"[bridge:carrier] --append-system-prompt-file does not match the prompt the daemon wrote; dropped\".\n- Outcomes report as `tengu_bridge_server_config_applied` and `tengu_bridge_server_config_rejected`, with skip categories `bridge_carrier_foreign_entry`, `bridge_carrier_not_http`, `bridge_carrier_url_mismatch`, `bridge_carrier_no_ingress_origin` and `bridge_carrier_no_session_id`.\n\n**Evidence**\n\n`CLAUDE_CODE_BRIDGE_PROMPT_SHA256`, `[bridge:server-config] meta url does not name the meta mount on the bridge origin`, `(Remote Control child only) bridge_carrier_foreign_entry, bridge_carrier_not_http, bridge_carrier_url_mismatch, bridge_carrier_no_ingress_origin, bridge_carrier_no_session_id`, `[bridge:carrier] --append-system-prompt-file does not match the prompt the daemon wrote; dropped`\n\n- Area: Remote Control\n- Names: `CLAUDE_CODE_BRIDGE_MCP_CARRIER`, `CLAUDE_CODE_BRIDGE_PROMPT_SHA256`\n- Tier: Nothing to try yet\n- Useful: 2\/5\n- Signal: 5\/5\n- Present in the build but not switched on"}