Repository navigation
feat: confidential value policy and render engine - #10509
Merged
Merged
Conversation
CurryYangxx
added this pull request to stack #10481
September 16, 2026 10:23
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
September 16, 2026 10:29
c83dbc6 to
873424d
Compare
CurryYangxx
marked this pull request as draft
September 16, 2026 10:30
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
2 times, most recently
from
September 17, 2026 09:29
9c95c3c to
6f9d184
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
2 times, most recently
from
September 17, 2026 11:50
bbefb74 to
d51f384
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
3 times, most recently
from
September 28, 2026 10:31
e6f9550 to
3cca128
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
September 28, 2026 10:31
3cca128 to
5fb5c5a
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
September 29, 2026 09:31
aa48058 to
a090ca2
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
3 times, most recently
from
September 30, 2026 06:50
3e48d66 to
33a3049
Compare
CurryYangxx
marked this pull request as ready for review
September 30, 2026 07:01
CurryYangxx
requested review from
cwangsmv
and
a balanced review from Copilot
September 30, 2026 07:01
|
✅ KSAI Review: Finished
Run report (federated) · 1 paid run · $0.1521 total
Reviewing cost $0.1516; deciding how to run it cost $0.0005 |
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
2 times, most recently
from
October 13, 2026 08:39
0d36a24 to
47da75c
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
October 13, 2026 08:40
47da75c to
014bce5
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
7 times, most recently
from
October 19, 2026 06:11
a122115 to
3738631
Compare
cwangsmv
previously approved these changes
Oct 19, 2026
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
October 19, 2026 08:07
3738631 to
b6fa9b9
Compare
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
2 times, most recently
from
October 19, 2026 09:07
8a73c9c to
601ded1
Compare
…ngine Introduce getConfidentialValuePolicy() as the single decision point for reveal/mask across all render surfaces (Phase 3.0). Extend RenderPurpose with 'codegen' and add forceReveal/getSettings() to BaseRenderContext. Update buildRenderContext() to track per-key ConfidentialValueKind via EnvironmentRenderLayer so normal-confidential KV pairs are masked before entering renderSubContext() — preview cannot pollute subsequent send (Phase 3.1). Wire maskOrDecryptVaultDataIfNecessary() through the same policy so SECRET reveal/mask follows hideSecretValuesInPreviewAndConsole. Add explicit purpose:'codegen' to exportHarWithRequest/exportHarRequest IPC path so Generate Code always masks confidential values independent of the user setting (Phase 3.4 IPC layer). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…rs use preview codegen and preview now have identical policy semantics (both controlled by hideSecretValuesInPreviewAndConsole; forceReveal only applies at call-site for preview). Keeping a separate purpose added complexity with no behavioural benefit. Remove 'codegen' from RenderPurpose, drop the codegen branch from getConfidentialValuePolicy, and restore shouldMaskExternalVaultTag to intercept only 'preview'. Generate Code / Copy as cURL callers will pass purpose:'preview' instead (updated in the UI branch). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…ildRenderContext Pure extract-function: the environment layer construction is unchanged, just moved into its own exported function so downstream stacked PRs (T9/T10 confidential-value prefill) can reuse the same layer enumeration instead of re-implementing it. buildRenderContext's behavior is unchanged and remains covered by render.test.ts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…cestors array for (const doc of (ancestors || []).reverse()) reversed the caller's array in place. Now that the layer construction is extracted into a standalone function, downstream callers (e.g. a T9/T10 prefill pass that enumerates the same layers before the real render pass) can receive the same ancestors array and call it twice, flipping the folder precedence order on the second call. Copy before reversing so the caller's array is left untouched. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CurryYangxx
force-pushed
the
feat/confidential-policy
branch
from
October 19, 2026 09:38
601ded1 to
b8d6311
Compare
cwangsmv
approved these changes
Oct 19, 2026
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.
Summary
getConfidentialValuePolicy()as the single decision point for reveal/mask across all render purposes. AddsforceRevealtoBaseRenderContextOptionsandgetSettings()toBaseRenderContext.buildRenderContext()to track per-key confidentiality viaEnvironmentRenderLayersoisConfidentialKV pairs are masked before enteringrenderSubContext()— preview masking cannot pollute subsequent send.maskOrDecryptVaultDataIfNecessary()through the same policy so SECRET reveal/mask now followshideSecretValuesInPreviewAndConsole.