Uh oh!
There was an error while loading. Please reload this page.
fix(workflows): redact run and export secrets - #6591
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryHigh Risk Overview Run outputs now go through a new Workflow export enables Reviewed by Cursor Bugbot for commit 08c27c3. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThe PR routes selected run outputs through provenance-aware display projection and applies fail-closed credential sanitization to workflow exports.
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains in the fixes covered by the previous review threads. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/lib/logs/execution/trace-store.ts | Adds a display-boundary materializer that projects requested authoritative block-state outputs and excludes raw execution state and trace fallbacks. |
| apps/sim/lib/workflows/executor/execution-status.ts | Uses the secret-safe materializer for final and selected block outputs, resolving the previously reported state-only output loss. |
| apps/sim/lib/workflows/sanitization/json-sanitizer.ts | Enables fail-closed redaction of opaque credential-bearing inputs during public workflow export. |
| apps/sim/lib/workflows/operations/export-workflow.test.ts | Verifies nested tool credential and password parameters are removed while ordinary parameters remain intact. |
| apps/sim/lib/logs/execution/trace-store.test.ts | Covers authoritative state-only projection, provenance failures, partial state, legacy traces, and nonmutation of persisted execution state. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
State[Persisted execution state] --> Materialize[Materialize execution data]
Materialize --> Project[Project requested block outputs using secret provenance]
Project --> Status[Workflow status response]
Trace[Trace spans] -. Not used as functional output fallback .-> Project
Workflow[Normalized workflow state] --> Sanitize[Fail-closed export sanitization]
Sanitize --> Export[Public workflow export]
Reviews (5): Last reviewed commit: "fix(workflows): stop deriving outputs fr..." | Re-trigger Greptile
TheodoreSpeaks
commented
Aug 12, 2026
TheodoreSpeaks
commented
Aug 12, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e92b6ab. Configure here.
TheodoreSpeaks
commented
Aug 12, 2026
TheodoreSpeaks
commented
Aug 12, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
TheodoreSpeaks
commented
Aug 12, 2026
TheodoreSpeaks
commented
Aug 12, 2026
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 08c27c3. Configure here.
TheodoreSpeaks
commented
Aug 12, 2026
Uh oh!
There was an error while loading. Please reload this page.
…accepts (simstudioai#6613) * test(export): pin the table and tool-param loss the sanitized export accepts simstudioai#6591 enabled `redactOpaqueCredentialInputs` on the workflow export path, closing a real leak. It also made export lossy for tables and unauthoritative tool params, and nothing pinned that trade in either direction. Adds round-trip fixtures (an api block with two table sub-blocks, an agent block with a custom tool) plus assertions for the current loss, records the security/usability trade on the flag that governs it, and deletes a duplicate `sanitizeForExport` in credential-extractor that omitted the redaction flag and had zero production importers. No behavior change. * test(export): make the env-ref leak sweep load-bearing and drop test any The sweep asserted against a token the fixture no longer contained, so it passed vacuously. Both the fixture and the assertion now read one symbol, which is the only form that cannot drift. Also types the re-imported block lookup instead of casting through any.
Summary
Type of Change
Testing
Checklist