Dynamic Review: Unicode tag-character text hidden in repository files reaches the model untouched
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 12/100
Research direction
Read PR #246 and its review at the linked URL, then the escape code in runner/src/code_reviewer_runner/dynamic_review/tagescape.py. Check how the size accounting in #232 (T06, T08) depends on returned text being unchanged. Done means a recorded decision (strip, flag as evidence, or leave) with the reasoning, and any change limited to tagescape.py. This needs maintainer input before any code is written.
Written by the indexing model from the issue text.
Description
Part of epic #193. Low priority; not a blocker for enabling opencode in #202.
Problem
Unicode tag characters (U+E0000 to U+E007F) render as nothing but map one to one onto ASCII (U+E0041 is "A"). Text written in them ("ASCII smuggling") can carry instructions that a reader does not see and some models decode. #243 (PR #246) ignores tag characters when it matches the <system-reminder> tag and chat-template tokens in a tool result, so a tag spelled with them is escaped. It does not touch tag-character text elsewhere in a repository file: a README, a comment or a string literal that holds hidden instructions is passed to the model untouched, in every tool result and in the checkout.
Task
- Decide whether to strip the tag block (and the other
Default_Ignorable_Code_Pointcharacters) from tool-result text, flag it as evidence, or leave it. Everything read from a pull request is untrusted data; a strip changes the bytes the model sees, so the size accounting (#232-T06, T08) and the "text is returned as it was" rule of the escape need a decision. - If handled, keep it small, linear-time and idempotent, and in the same place as the escape (
runner/src/code_reviewer_runner/dynamic_review/tagescape.py).
Source
Review of PR #246, "Bypasses and the 'not covered' choices": https://github.com/ExpidetGames/code-reviewer/pull/246#pullrequestreview-5511487009
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 1
- Avg merge
- 1h 18m
- Merged PRs (30d)
- 186
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ExpidetGames/code-reviewer
-
area: app type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
ExpidetGames/code-reviewer#308 ·
Maintainers usually reply within 1 day
-
type: docs
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ExpidetGames/code-reviewer#94 ·
Maintainers usually reply within 1 day
-
area: app post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 12/100
ExpidetGames/code-reviewer#339 ·
Maintainers usually reply within 1 day
-
area: runner post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 18/100
ExpidetGames/code-reviewer#338 ·
Maintainers usually reply within 1 day
-
area: runner post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 12/100
ExpidetGames/code-reviewer#337 ·
Maintainers usually reply within 1 day
All issues in ExpidetGames/code-reviewer
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
melgarafael/DeskcommCRM#3000 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
callstackincubator/simlock#639 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
aws/agentcore-cli#2606 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 7 days
-
ai-driven-qa bug Cosmetic
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day