Strip control bytes from injected prompt text - #395
Open
jameshoweee wants to merge 1 commit into
Open
jameshoweee wants to merge 1 commit into
jameshoweee wants to merge 1 commit into
Conversation
A room message could carry a bracketed-paste end marker, which closed the paste early and turned the rest of the message into live keystrokes in the agent's TUI. Strip C0/C1 control bytes, keeping tab and newline, before wrapping.
jameshoweee
requested review from
amaudruz and
christian-mcdermott
as code owners
September 8, 2026 17:25
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.
Room messages get wrapped in a bracketed paste (
ESC[200~ ... ESC[201~) and written straight into an agent's TUI. Nothing strips control bytes first, so a message that contains its ownESC[201~closes the paste early and everything after it lands as live keystrokes. Any participant in the room can send that.This strips C0/C1 control bytes from the text before wrapping it. Tab and newline are kept so pasted content is unchanged.
Tests: two cases added to the existing prompt-injection suite, one for the embedded end marker and one proving tabs and newlines survive. 9/9 in that file.