Clear
No source value or high-confidence shape reached a scanned sink.
Local-first credential tracing
Wrap a build, agent, or release command. See the redacted path from a local source into logs, Git diffs, and generated artifacts—without sending the value anywhere.
cargo install --git …/sf-secret-exposure-path
Open sourceNo telemetryOne binary
01 / Path model
`sep` reads only the sources and outputs you name, plus staged and unstaged Git diffs. It maps exact matches and high-confidence credential shapes.
Dotenv files and selected environment variables become in-memory candidates.
--source .env
Output is captured, scanned, redacted, and then forwarded to your terminal.
-- npm run build
Findings link source → command → log, artifact, working tree, or staged diff.
exit 10
02 / Browser lab
This small browser model uses the same declared-value idea as the CLI. Change either side to test exposed, clear, and error states.
Runs locally—even offline
Edit the sample or run the ready trace.
03 / Use it
# Build and install the single Rust binary
cargo install --git https://github.com/B-Divyesh/sf-secret-exposure-path
# Wrap a command and declare the outputs to inspect
sep run \
--source .env \
--from-env DEPLOY_TOKEN \
--output dist/build.log \
-- npm run build
# CI: one JSON report; exit 10 blocks an exposure
sep run --json --source .env.ci -- ./ci.sh
No source value or high-confidence shape reached a scanned sink.
Use the stable exit code to stop CI before publishing or committing.
A source is missing, unreadable, or the command could not start.
Honest boundary
Exact tracking stops when a value is encrypted, split, or transformed beyond recognition. Shape-only findings are labeled unattributed. Narrow fingerprint and path allowlists tame known fixtures without hiding every result.