Skip to content

Bind span header redaction to the hosted HTTP client - #1626

Merged
RhysSullivan merged 2 commits into
mainfrom
span-header-redaction
Aug 17, 2026
Merged

RhysSullivan merged 2 commits into
mainfrom
span-header-redaction

Conversation

@RhysSullivan

Copy link
Copy Markdown
Collaborator

Follow-up to #1623. Live verification showed post-deploy http.client spans still recording non-allowlisted headers: consumers capture the client at construction and run requests on fibers the host telemetry layers never reach, so the Context.Reference provided by layer did not make it to the tracer's getRef. The redaction now travels with the client itself (HttpClient.transformResponse wrapping each request effect in provideService), with the allowlist single-sourced in the sdk and the cloud telemetry layer reusing it for the server-side tracer. Includes a regression test that drives a request through the real hosted client and asserts redaction on the recorded span attributes.

Live verification after the telemetry-layer redaction shipped showed
post-deploy http.client spans still recording non-allowlisted headers:
consumers capture the client value at construction and execute requests on
fibers a host telemetry layer never reaches, so providing the redaction
reference by layer was not enough. Bind it to the client itself so every
request effect carries it, and keep the cloud layer as the server-side half.
Regression test drives a request through the real client and asserts on the
recorded span attributes.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
executor-cloud f36bde7 Aug 17 2026, 06:01 PM

@pkg-pr-new

pkg-pr-new Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

@executor-js/cli

npm i https://pkg.pr.new/@executor-js/cli@1626

@executor-js/config

npm i https://pkg.pr.new/@executor-js/config@1626

@executor-js/execution

npm i https://pkg.pr.new/@executor-js/execution@1626

@executor-js/sdk

npm i https://pkg.pr.new/@executor-js/sdk@1626

@executor-js/codemode-core

npm i https://pkg.pr.new/@executor-js/codemode-core@1626

@executor-js/runtime-quickjs

npm i https://pkg.pr.new/@executor-js/runtime-quickjs@1626

@executor-js/plugin-file-secrets

npm i https://pkg.pr.new/@executor-js/plugin-file-secrets@1626

@executor-js/plugin-graphql

npm i https://pkg.pr.new/@executor-js/plugin-graphql@1626

@executor-js/plugin-keychain

npm i https://pkg.pr.new/@executor-js/plugin-keychain@1626

@executor-js/plugin-mcp

npm i https://pkg.pr.new/@executor-js/plugin-mcp@1626

@executor-js/plugin-onepassword

npm i https://pkg.pr.new/@executor-js/plugin-onepassword@1626

@executor-js/plugin-openapi

npm i https://pkg.pr.new/@executor-js/plugin-openapi@1626

executor

npm i https://pkg.pr.new/executor@1626

commit: f36bde7

The package's tsc build failed on Headers.entries() and the iterable
protocol: its lib had DOM without DOM.Iterable, so the fetch Headers type
lacked both. Latent on main; every CI run served the package build from the
turbo cache until the sdk change invalidated it. Same lib pairing
hosts/cloudflare already uses.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
executor-marketing f36bde7 Commit Preview URL

Branch Preview URL
Aug 17 2026, 05:59 PM

@RhysSullivan

Copy link
Copy Markdown
Collaborator Author

Deploy preview failure was a latent main breakage: plugins/mcp compiles with lib DOM but not DOM.Iterable, so Headers.entries() and the iterable protocol were missing from its program. It never surfaced because CI served that package build from the turbo cache; this branch's sdk change invalidated the cache and forced a fresh compile. Fixed here by adding DOM.Iterable (the pairing hosts/cloudflare already uses).

@github-actions

Copy link
Copy Markdown
Contributor

Cloudflare preview

Console https://executor-preview-pr-1626.executor-e2e.workers.dev
MCP https://executor-preview-pr-1626.executor-e2e.workers.dev/mcp
Deployed commit f36bde7

Sign-in is Cloudflare Access (one-time PIN to an allowed email). The preview has its own database and encryption key; it is destroyed when this PR closes.

@RhysSullivan
RhysSullivan marked this pull request as ready for review August 17, 2026 18:34
@RhysSullivan
RhysSullivan merged commit d3f0617 into main Aug 17, 2026
23 of 25 checks passed
@RhysSullivan RhysSullivan mentioned this pull request Aug 18, 2026
omega-alpha-matt Bot pushed a commit to airbooksio/executor that referenced this pull request Aug 18, 2026
…o#1626)

* Bind span header redaction to the hosted HTTP client

Live verification after the telemetry-layer redaction shipped showed
post-deploy http.client spans still recording non-allowlisted headers:
consumers capture the client value at construction and execute requests on
fibers a host telemetry layer never reaches, so providing the redaction
reference by layer was not enough. Bind it to the client itself so every
request effect carries it, and keep the cloud layer as the server-side half.
Regression test drives a request through the real client and asserts on the
recorded span attributes.

* Add DOM.Iterable to the mcp plugin tsconfig

The package's tsc build failed on Headers.entries() and the iterable
protocol: its lib had DOM without DOM.Iterable, so the fetch Headers type
lacked both. Latent on main; every CI run served the package build from the
turbo cache until the sdk change invalidated it. Same lib pairing
hosts/cloudflare already uses.
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