FZ-009 · SECURITY

promptdecode

Finds invisible text in code reviews that a human reviewer would miss.

Alpha VALIDATION FZ stackHidden-text screeningOpen source
Visit promptdeco.de Launched: NOT YET
Status
Alpha
Pipeline stage
VALIDATION
Sector
SECURITY
Autonomy target
LEVEL 4 · SELF-OPTIMIZING
Built with
3 live · 1 planned

The problem

Hidden text in a pull request or issue can tell a coding agent to merge, and the reviewer never sees it.

What it does

promptdecode decodes hidden Unicode text in your browser, sends nothing, and shows what it says.

How it works

  1. Paste any text and it reveals hidden characters and decodes their message
  2. Runs entirely in your browser; nothing is sent anywhere
  3. A config scanner checks your GitHub workflows for agent steps that untrusted input can reach

Free to use today at promptdeco.de.

Catch a hidden instruction before your agent acts on it.

TodayThe decoder works today in the browser. promptdecode-core 0.1.0 is on crates.io; the scanner and the GitHub Action are not released yet.

Aims

Autonomous operation
Review is the automation target. A coding agent with a write token reads a pull request that a human reviewer has already approved, and the two of them are not reading the same document: tag-block characters, bidi overrides and variation selectors render as nothing and tokenize normally. The scanners are meant to run in CI on every change, decode what they find rather than merely flag it, and post the plain text back on the pull request, with no model in the loop and nothing leaving the runner.
Intelligence
Deliberately none where none is needed. Both planned engines are deterministic: one tracing untrusted workflow input to an agent step that holds a write token, one matching named Unicode classes across repository content. A detector that needs a model to decide what is suspicious cannot state its own coverage, and coverage that can be stated is the product.
Growth
Evidence-led, and slower for it. No percentage of attacks blocked is published, because character-level evasion rates move too far with technique for one number to mean anything. What gets published is deterministic coverage of a named list of Unicode classes and recall at a stated false-positive rate on a named corpus, with the corpus and the harness in the open. Growth is repositories scanned per week once the Action exists.
The technical detail

Finds text that is invisible to a human reviewer and fully legible to a language model, and decodes it. Hidden instructions in a pull request title, an issue body or a repository file can tell a coding agent to approve, merge or comment, while the diff shows nothing unusual. Two parts work today. The decoder on the site, which reads three named classes of code point (the Unicode tag block, bidi controls and overrides, variation selectors), reconstructs the payload they encode, and runs entirely in the reader’s browser, sending nothing anywhere. And the config scanner, which traces untrusted workflow input to an agent step holding a write token, and runs from source with no release yet. The rest is designed and unwritten: a content engine that decodes payloads across a repository, a command-line scanner, a GitHub Action, and an open benchmark. If a class is not on the published list, it is not detected; the list is the claim.