Skip to content

feat(host-cloudflare): los hosts internos reciben x-executor-origin (direct o service) - #25

Merged
fforres merged 1 commit into
skywardfrom
fforres/executor-origin-header
Oct 18, 2026
Merged

fforres merged 1 commit into
skywardfrom
fforres/executor-origin-header

Conversation

@fforres

@fforres fforres commented Oct 18, 2026 •

Copy link
Copy Markdown

Qué cambia

Junto con x-executor-account-id, las llamadas a hosts internos ahora llevan x-executor-origin, con uno de dos valores:

  • direct: una persona cuyo propio cliente MCP llegó a Executor por la puerta de Access.
  • service: todo lo demás (puerta de service binding, ejecuciones delegadas, service tokens).

El valor lo decide el servidor a partir del principal verificado. Nunca se lee de los headers de la solicitud ni de los argumentos de una herramienta: routeInternalHosts elimina cualquier x-executor-origin entrante antes de fijar el valor, así que un x-executor-origin: direct falsificado en una llamada de servicio llega como service.

Dónde se decide

  • apps/host-cloudflare/src/auth/cloudflare-access.ts: principalFromAccessClaims (persona con email = direct, service token = service), bindSubject e internalPrincipal (siempre service).
  • packages/core/sdk/src/hosted-http-client.ts: routeInternalHosts borra y fija el header.
  • El valor viaja en Principal.origin hasta la sesión MCP y hasta el executor con alcance. Si falta, se asume service.

Pruebas

  • hosted-http-client.test.ts: direct, service, header falsificado reemplazado y header ausente sin la opción.
  • cloudflare-access.test.ts: persona, service token, delegado, puerta interna y header falsificado ignorado.

Alongside x-executor-account-id, internal hosts now receive
x-executor-origin: direct for a person whose own client reached Access,
and service for everything else (service-binding door, delegated runs,
service tokens). Any incoming value is deleted first; the value comes from
the verified principal only.

Claude-Session: https://claude.ai/code/session_017gbcpUnzDxK1ztNW8exWzi
@fforres
fforres merged commit f87e149 into skyward Oct 18, 2026
4 of 40 checks passed
@fforres
fforres deleted the fforres/executor-origin-header branch October 18, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant