feat(chat-action): carry hidden context in the user turn, not the system prompt#24
Merged
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Action-button hidden context injected at the head of the last user message is app-authored and trusted; the moderation gate must judge only the user's own visible text. Add stripHiddenContext() to moderation/operations.ts (pure, mirroring the UI sentinel format) and apply it at the gateway call site before startModeration(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Agent action-button "hidden context" is now carried inside the triggering user
turn (wrapped in
<hidden-context>sentinels) instead of being merged into thesession system prompt.
What changed
wrapHiddenContext/splitHiddenContext).sendMessagewraps the hidden context into the history user turn; the chatbubble still displays only the visible prompt.
AgentChat.vueno longer mutates the session system prompt on action start oron session-clear.
turn.hiddenContext,surfacing it as a distinct trace-overview entry.
included.
Why: keep action context scoped to the turn that needs it (not a permanent
system-prompt mutation), make it visible in the trace reviewer, and close a
moderation bypass where the previous approach would have stripped the wrapper.
Regression risks:
across follow-up messages the way the system-prompt approach did.
<hidden-context>block for legit UI actions, so anaction whose context trips the classifier could block the turn. Deliberate
anti-bypass tradeoff.
splitHiddenContextparses stored trace content; a user message literallystarting with the sentinels would be mis-split in the trace reviewer
(display-only, low risk).