Skip to content

fix(executors): sanitize web provider error boundaries - #16125

Merged
diegosouzapw merged 1 commit into
release/v3.8.52from
fix/15159-ddg-error-sanitization-1010
Oct 10, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.52from
fix/15159-ddg-error-sanitization-1010

Conversation

@diegosouzapw

Copy link
Copy Markdown
Owner

DuckDuckGo upstream error type and anti-abuse overrideCode fields could reach the executor response without canonical sanitization. Sanitize the normalized message at processResponse before serializing it, preserving the existing status and JSON envelope. Apply the same protection to the local DuckDuckGo and Copilot M365 error helpers as preventive hardening; their current callers did not demonstrate an active leak.

Refs #15159 (E-03 and the adjacent DuckDuckGo response boundary). This is a partial umbrella delivery: the custom error envelopes remain supported by the error-sanitization contract, and this PR does not claim to convert every builder to buildErrorBody or complete the 78-item audit.

Validation:

  • TDD: two active leak cases fail before the production change; the unchanged five-case fixture passes afterward through the real executor execute method. It checks synthetic credentials/private paths/stack frames, benign error text, 418 without retry, status/envelope preservation, and non-reflection of unstructured HTML.
  • Related Node suites: 46 files, 536 tests, 535 pass and one Gemini specialty-validation failure. That same failure reproduces on the clean base 7858333 (115/116); it is not reported as an all-green run. Related Vitest suite: 6/6 pass.
  • Core and dashboard type checks, focused ESLint/Prettier, both complexity gates, file-size, changelog integrity and test discovery pass. Independent SPEC and Standards reviews found no blocking issue. Real pre-commit and commit-msg hooks passed with all four reviewed file hashes unchanged.

The focused fixture uses temporary data/plugin paths and blocks sockets. These checks establish the executor response contract, not live upstream acceptance or exposure through the final HTTP route. Hosted CI remains authoritative for integration; no merge is performed here.

@github-actions

Copy link
Copy Markdown
Contributor

CI Coverage Report

  • Coverage job: skipped
  • PR test policy: success

Coverage artifact was not available for this run.

@diegosouzapw
diegosouzapw merged commit 0cd2f51 into release/v3.8.52 Oct 10, 2026
27 of 51 checks passed
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