Talk this topic through with an AI

You get an answer from the documentation and the page it comes from.

inject0

How inject0 checks fetched content

inject0 is the local check in the poison0 agent (from poison0 agent 1.16.56). It checks fetched content for prompt injection before the agent acts on them, on the device. The service for your own applications is called inject0 Gateway and is a separate product.

~5 min read · inject0

What is checked

inject0 checks the result of a tool after it ran and before the agent reads it (hook PostToolUse). inject0 does not check your own input.

Fetched contentCheckedNote
Web fetchesyesFor WebFetch in Claude Code the hook only sees the summary the tool writes.
Web searchyesThe list of search results
MCP toolsyesEvery result of an MCP server
Shell outputyesThe output of commands such as curl or git log
File readsyesAlso search hits with file content, such as Grep in content mode
File listsnoGlob, LS and Grep with file names only carry no content.

Melira scores the whole text on the device with a score between 0.000 and 1.000. At or above the alarm threshold the result counts as a hit. No path is exempt.

Levels

Level in the consoleValueEffect of a hit
OffoffNo check. Fetched content reaches the agent unchecked.
ObserveobserveThe hit is written to the local audit. The agent gets the result unchanged.
MarkhintThe result stays. The agent is told not to follow instructions in it.
Remove (default)redactThe agent gets a short notice instead of the result. The text stays on the device.
inject0 is on out of the box, at the level Remove. Unlike exec0 and leak0, you do not have to switch it on.

What Remove does

  • The agent gets a notice with the score and the threshold instead of the whole result.
  • The text is kept as a plain file in your own data folder: ~/.poisonzero/inject0-withheld, on Windows %LOCALAPPDATA%\PoisonZero\inject0-withheld. The notice names the file.
  • The files are not encrypted and do not expire. Delete them yourself when needed.
  • If the agent reads such a file later, inject0 checks it again.

Alarm threshold

ItemValue
Default0.30, allowed range 0.20 to 0.40
Cloud devicesPoisonZero sets a different threshold for your account on request.
Private devicesA different threshold is part of the signed client-config.json.
On the deviceThe command poisonzero inject0 threshold shows the value and its source but does not change it.

When a check cannot run

SituationRemoveMarkObserve
Time budget exceeded, model still loading, engine error or result larger than 8 MiBResult withheld, named as uncheckedNote “not checked”Result unchanged, audit entry
PoisonZero service not reachableResult withheldNote “not checked”Result unchanged

If Melira is not installed on the device yet, inject0 checks nothing. The agent is then told once per session that fetched content is unchecked. poisonzero doctor names the reason.

Supported agents

inject0 uses the same hook entries as exec0 and leak0.

AgentWhat is checkedEffect
Claude CodeAll results listed aboveRemove and Mark. For WebFetch only the summary.
Codex (CLI and IDE)All results listed aboveRemove replaces the whole result with the notice.
Gemini CLIAll results listed aboveRemove replaces the whole result. The note of Mark is shown to you only, not to the model.
CursorOnly results of MCP toolsRemove and Mark
Antigravity CLINoneNo effect: the hook does not receive the fetched content.

Working with leak0

When leak0 redacts a secret value in fetched content, inject0 checks the redacted version. inject0 never sees the secret value.

Settings

Plan and deviceSetting
Enterprise, cloud devicesConsole: Settings → Profiles, Edit on the profile, tab inject0: the switch On and the Level. Devices take the setting at their next sync.
Enterprise, private devicesThe level is part of the signed client-config.json from Export for private devices. Rollout: Installing the poison0 agent.
Pro and Solo DevAlways on, at the level Remove
On the deviceNo local switch. poisonzero status shows the level and whether the check runs.

Audit

In the consoleActionMeaningConsole audit (cloud mode)
Withheldinject0_withheldHit, the result was withheldyes
Markedinject0_markedHit at the level Markyes
Not checkedinject0_uncheckedThe check did not finishyes
Observedinject0_observedHit at the level Observeno, local only

Fields per entry: time, agent, tool, size of the result, score, threshold, level and decision. Never included: the text, URLs and paths.

Privacy

DataCloud modePrivate mode
Text of the fetched contentChecked on the device, never sentChecked on the device, never sent
Withheld textOnly in your own data folderOnly in your own data folder
Audit entry, without contentOn the device and in the consoleOn the device only
ModelDownloaded by the poison0 agentArrives with the licence check about every 30 days, with no extra request

Full list: What cloud mode sends.

Availability

ItemValue
VersionFrom poison0 agent 1.16.56
PlansSolo Dev, Pro and Enterprise
HardwareRuns on the CPU. No GPU is needed.

Further reading

For your own applications and LLM gateways: inject0 Gateway. Harmful tool calls: exec0. Secret leaks: leak0.