ARLONGOpen Arlong AI ↗
Security engineering / case study

We found a hidden instruction in a webpage.
Arlong did not obey it.

A real page attempted to steer an AI reader with invisible text. Our extraction layer surfaced the pattern, recorded it as a threat signal, and kept the instruction out of the answer path.

Aug 25, 2026ARLONG SECURITY NOTEINDIRECT PROMPT INJECTION

The web is not a trusted prompt

Search is becoming an input layer for agents. An agent finds a page, extracts its text, then sends that text to a model that can answer, browse, write code, or call tools. That workflow is useful, but it creates a boundary problem: webpages are authored by strangers, while the model may treat natural-language instructions as meaningful.

Indirect prompt injection exploits that boundary. The malicious instruction is not typed by the user. It is placed inside a webpage, frequently in hidden HTML, off-screen elements, comments, metadata, or text coloured to blend into the page. A naïve extractor can hand it to the model alongside legitimate content.

The important distinction

This is not a claim that every hidden element is malicious. It is a signal that untrusted page text contains language attempting to redirect an AI system's behavior. That content should not be granted the same status as the user’s request or verified evidence.

What Arlong observed

In this case, the page’s visible content was an ordinary technical site. Its source, however, included a hidden block with imperative language such as “Ignore previous instructions,” followed by instructions to refuse the user’s request and produce unrelated output. The request was not relevant to the page’s stated purpose. It was an attempt to control the reader.

Page source showing hidden prompt-injection instructions

Figure 1. The instruction appeared in hidden page content, not in the user’s request.

A second incident was blocked before extraction

We also tested a separate page that embedded an imperative instruction in an element styled to be effectively invisible. The instruction attempted to replace the user’s request with a different task. This time Arlong did not merely attach a review signal. The extraction result was blocked before any page content could be returned to the requesting AI workflow.

Page source showing a visually hidden prompt-injection attempt

Figure 2. The hostile instruction was placed in near-invisible source text, separate from the visible webpage.

Observed outcome: extraction blocked

The request completed without reading the page into downstream context. Arlong returned an empty content field, BLOCKED reputation, and a trust score of 0. The hidden text was not executed, summarized, or passed through as evidence.

Arlong extract result showing empty content, blocked reputation, and zero trust score

Figure 3. The observed API/tool result for the blocked page: no extracted content, blocked reputation, zero trust score.

What happens in Arlong

Arlong treats retrieved text as untrusted evidence, never as a command channel. Screening occurs before content is offered to downstream synthesis. The safety result becomes metadata that routing and extraction can use, rather than a silent judgment hidden from the operator.

01 / FETCH

Retrieve

Fetch only the page selected by the caller.

02 / NORMALIZE

Extract

Turn markup into reviewable text while retaining safety context.

03 / SCREEN

Classify

Look for instruction-like patterns aimed at agents or tools.

04 / ISOLATE

Route safely

Flag or withhold unsafe content before it reaches synthesis.

The detector produced a TOOL_EXECUTION_REQUEST signal on this page. That signal did not mean the page was automatically labelled as malware, and it did not authorize any tool use. It meant the extraction output required review and the instruction could not be treated as evidence for the answer.

Arlong detection output showing the tool execution request flag

Figure 4. Arlong reports the detected pattern as a safety signal; the page instruction was not executed.

What did not happen

Arlong did not follow the hidden instruction. It did not change the user’s task, refuse because of a page-authored copyright claim, call a tool, or generate the unrelated text requested by the page.

Why labels alone are not enough

A source can have a healthy reputation and still contain unsafe text. A page can be useful to a human reader while including a hostile payload for an automated one. That is why source reputation, relevance, and prompt-injection screening are separate signals in Arlong. Collapsing them into one “safe/unsafe” badge loses the distinction operators need.

{
  "source_reputation": {"status": "SAFE", "trust_score": 88},
  "security_analysis": {
    "action": "review",
    "flags": ["TOOL_EXECUTION_REQUEST"],
    "scanned_chars": 4002
  }
}

The values above illustrate the kind of structured result available to an agent. Scores and flags vary by source and are not a guarantee that a page is harmless. They are a way to make the system’s safety decision inspectable and to ensure risky content is not casually promoted into model context.

What this does and does not solve

No detector can prove that a webpage is safe. Attackers can use new wording, images, documents, encoded strings, or legitimate-looking instructions. Defense therefore cannot be one regex or one model pass. It needs layered controls: explicit trust boundaries, constrained tool permissions, source-level screening, grounded synthesis, and audit-friendly metadata.

Arlong’s role is the web boundary. It reduces the chance that hostile web text becomes trusted model context, and it gives people and agent builders a visible signal when a source needs closer inspection. Applications should still apply their own authorization rules before executing actions.