Repository navigation
Conversation
Replay hrefs and stylesheet URLs become root-relative, so they match uploaded source maps and no longer carry the install path.
Stacks and URLs in RUM, telemetry, logs, spans and profiles become root-relative, so they match uploaded source maps.
Describes where payloads are scrubbed and adds the e2e positive control proving it runs.
Runs on every e2e, integration and compatibility scenario, so each app setup and platform validates the scrubbing.
bcaudan
added this pull request to stack #242
October 7, 2026 16:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Payloads still carry installation-specific app paths (
file:///Users/alice/…/app.asar/dist/main.js, main-process stacks under the install folder): source maps can't resolve them and they leak the user's home directory. This PR wires thePathScrubberfrom the previous PR into every place payloads are written, so the app path becomes/everywhere.Breaking change:
view.url,resource.url, error stacks, replayhrefand profile resources change from absolutefile://or install paths to root-relative values (/main-window.html,/main.js). Queries and monitors on the old values break, and Error Tracking issues regroup once.Changes
init()builds onePathScrubberand passes it explicitly down to the three exit points:StandardBatchProducer(RUM, telemetry, logs, spans),ProfileBatchProducer(event and trace) andSegment.flush(replay). Scrubbing happens afterbeforeSendRum, so existing customer rewrites keep working.raw_segment_sizeare computed on the scrubbed text.userData,crashDumps), so every app setup and platform of the compatibility matrix validates the scrubbing. A positive control checks that main-process frames are root-relative.docs/ARCHITECTURE.mddescribes payload scrubbing;docs/TESTING.mddescribes the intake check.Test instructions
file://renderer error/…instead offile:///Users/…hrefis root-relativeChecklist