FZ-009 · SECURITY
promptdecode
Finds invisible text in code reviews that a human reviewer would miss.
- 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
- Paste any text and it reveals hidden characters and decodes their message
- Runs entirely in your browser; nothing is sent anywhere
- 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.
Related
From the same foundation.
- Owlpost. Email API for apps and AI agents, with its own inboxes.
- Colonizer. Turns GitHub issues into pull requests for developers on their own machine.
- Cratefield. A backend for builders who would rather compile than configure.
- Keep Shipping. Deploy workflows for engineers, as one typed file per repository.