Secure Autonomous
FeedbackGet alertsCheck a deployment
Cases / REG-0025

Perplexity Comet: a web page steers a browsing agent toward the user's own credentials, disclosed August 2025

Caught first by researchersSoftware agents · Personal agentsHuman supervisesDemonstration
REG-0025Updated 2026-10-284 sources, 4 linkedDisclosure corroborated

What happened

Brave, a competing browser maker, showed that hidden instructions in a web page could lead Perplexity's Comet agent, asked only to summarize the page, to open the user's email and leak the address and a one-time code. On the record, Comet treated page text as instruction and carried every logged-in session the user had. Brave says the issue appeared patched in August 2025 but was not fully mitigated after publication.

A plain summary of the typed record below; where they differ, the record governs.

Verification: 6 of 6 checks complete
✓ Structured and checkedevery claim typed and sourced, then checked by the Register's automated checker for missing sources and mistyped claims
✓ Sources linked4 of 4 sources link to the record (1 to a primary record)
✓ Sources checked claim by claimevery claim checked against its source on 2026-10-20
✓ Interpretation checked statement by statementeach statement of the Register's interpretation checked against a source on 2026-10-21
✓ Reviewed by the editorreviewed 2026-10-28
✓ Reply offeredPerplexity: offered; Brave: offered
Corrections · 17, latest 2026-10-21

Changes to what this case says, with the reason. Every earlier version is kept.

  • 2026-10-21: Inference: signed by. The interpretation's wording changed after the editor signed it (second, independent check of 21 october 2026); the signature is cleared so the editor signs the corrected wording.
    Show the change
    Before: Saurabh Bhatnagar
    After:
  • 2026-10-21: Inference: value. Found in the editor's second, independent check of the interpretations, 21 october 2026: the page was a reddit post carrying the attacker's comment, on a site brave says the attacker 'doesn't control' (brave), not the attacker's page; echoleak also ran only after the user asked copilot a question (bleepingcomputer; reg-0021's mandate field).
    Show the change
    Before: The browsing-agent counterpart of EchoLeak (REG-0021): text in content the agent read was carried out as instructions with the user's authority, here the user's signed-in sessions. Unlike EchoLeak, where the instructions arrived unasked in an email, the attack ran only after the user asked Comet to summarize the attacker's page. The record does not show what Perplexity's patches changed, and Brave and Perplexity disagree on whether the fix was complete. The researchers work for a competing browser maker, which readers should weigh
    After: The browsing-agent counterpart of EchoLeak (REG-0021): text in content the agent read was carried out as instructions with the user's authority, here the user's signed-in sessions. Unlike EchoLeak, where the instructions arrived unasked in an email and were picked up when the user asked Copilot an ordinary question, the attack ran only after the user asked Comet to summarize a page carrying the attacker's hidden instructions. The record does not show what Perplexity's patches changed, and Brave and Perplexity disagree on whether the fix was complete. The researchers work for a competing browser maker, which readers should weigh
  • 2026-10-20: Outcome: as of. Found in the editor's source re-check of 19-20 october 2026: the record now runs to perplexity's 22 october 2025 post describing comet's prompt-injection mitigations (pplx-mitigate); a search for later rulings, regulator action or further statements on this report found none.
    Show the change
    Before: Aug 2025
    After: Oct 2025
  • 2026-10-20: Inference: source ids. Found in the editor's source re-check of 19-20 october 2026: the interpretation now cites the patch not being shared (register) and perplexity's account (decrypt).
    Show the change
    Before: ["BRAVE"]
    After: ["BRAVE", "REGISTER", "DECRYPT"]
  • 2026-10-20: Inference: value. Found in the editor's source re-check of 19-20 october 2026: the brave post does not mention echoleak, so the comparison is the secure autonomous register's own cross-reference; it skipped a difference the record shows: the user 'asks comet to summarize' the reddit post carrying the hidden instructions, whereas echoleak (reg-0021) needed no user action on the attacker's email. the interpretation now also says what the record does not show (a brave spokesperson told the register the patch was not shared) and that brave ('still hasn't fully mitigated') and perplexity ('was patched before anyone noticed', per decrypt) disagree. the interpretation was unsigned (signed_by null); the editor signs the new wording.
    Show the change
    Before: The browsing-agent version of EchoLeak, with the user's signed-in sessions as the authority at stake. The researchers work for a competing browser maker, which readers should weigh
    After: The browsing-agent counterpart of EchoLeak (REG-0021): text in content the agent read was carried out as instructions with the user's authority, here the user's signed-in sessions. Unlike EchoLeak, where the instructions arrived unasked in an email, the attack ran only after the user asked Comet to summarize the attacker's page. The record does not show what Perplexity's patches changed, and Brave and Perplexity disagree on whether the fix was complete. The researchers work for a competing browser maker, which readers should weigh
  • 2026-10-20: Fields: recovery technical: source ids. Found in the editor's source re-check of 19-20 october 2026: new sources register (patch not shared) and pplx-mitigate (vendor's described mitigations).
    Show the change
    Before: ["BRAVE"]
    After: ["BRAVE", "REGISTER", "PPLX-MITIGATE"]
  • 2026-10-20: Fields: recovery technical. Found in the editor's source re-check of 19-20 october 2026: the brave post lists separating page content from instructions as a recommendation ('the browser should clearly separate the user's instructions from the website's contents'), not as a step perplexity took; the register (20 august 2025) reports that 'a brave spokesperson said perplexity did not share the patch'. perplexity's own post 'mitigating prompt injection in comet' (22 october 2025) says 'external content is demarcated as untrusted in prompts' and describes classifier checks and user confirmation for sensitive actions.
    Show the change
    Before: Patches; separation of page content from instructions
    After: Patches: an initial fix on 27 July, found incomplete on retest, and a fix that appeared to work by 13 August; a Brave spokesperson said Perplexity did not share the patch, and the sources do not say what it changed. Separating page content from the user's instructions is Brave's recommendation, alongside checking actions against the user's request, asking the user to confirm sensitive actions and isolating agentic browsing. In a later post (22 October 2025) that does not mention this report, Perplexity said Comet marks external content as untrusted in prompts, runs classifier checks on new content before acting and pauses for the user's confirmation before actions such as sending an email or making account changes
  • 2026-10-20: Fields: evidence event: source ids. Found in the editor's source re-check of 19-20 october 2026: new source decrypt carries perplexity's statement.
    Show the change
    Before: ["BRAVE"]
    After: ["BRAVE", "DECRYPT"]
  • 2026-10-20: Fields: evidence event. Found in the editor's source re-check of 19-20 october 2026: brave's browser is free, so 'sells' was loose; the brave post says 'we're developing the ability for our in-browser ai assistant leo to browse the web on your behalf'. 'perplexity's own statement is not in this record' was out of date: decrypt (25 august 2025) quotes a perplexity spokesperson: 'we worked directly with brave to identify and repair it'.
    Show the change
    Before: Researcher disclosure with demonstration and a dated timeline; note that the researcher sells a competing browser. Perplexity's own statement is not in this record
    After: Researcher disclosure with demonstration and a dated timeline; note that the researcher makes a competing browser and is building agentic browsing for its own assistant, Leo. Perplexity's statement is not in the Brave post; to the press, a Perplexity spokesperson said the issue was patched before anyone noticed, that no user data was compromised and that Perplexity worked directly with Brave, and Perplexity disputed the severity of the finding
  • 2026-10-20: Fields: outcome: source ids. Found in the editor's source re-check of 19-20 october 2026: new source decrypt carries perplexity's account.
    Show the change
    Before: ["BRAVE"]
    After: ["BRAVE", "DECRYPT"]
  • 2026-10-20: Fields: outcome: disputed. Found in the editor's source re-check of 19-20 october 2026: brave says the attack was not fully mitigated; perplexity says it was patched (brave post; decrypt, 25 august 2025).
    Show the change
    Before: false
    After: true
  • 2026-10-20: Fields: outcome. Found in the editor's source re-check of 19-20 october 2026: the brave post's timeline also records 'august 11, 2025: one-week public disclosure notice sent to perplexity', and its update says 'after this blog post was released, we learned that perplexity still hasn't fully mitigated the kind of attack described here. we've re-reported this to them'; decrypt (25 august 2025) reports that 'perplexity disputed the severity of the finding' and that a spokesperson said the issue 'was patched before anyone noticed' and no user data was compromised. the two accounts disagree, so both are stated and the field is marked disputed (runbook rule 16).
    Show the change
    Before: State: averted by disclosure. Reported 25 July 2025; Perplexity's first fix came two days later and the researcher found it incomplete; the issue appeared patched by 13 August; after publication Brave said the attack still had not been fully mitigated
    After: State: averted by disclosure. Reported 25 July 2025; Perplexity's first fix came two days later and the researcher found it incomplete; Brave sent Perplexity a one-week public-disclosure notice on 11 August; the issue appeared patched by 13 August; after publishing on 20 August, Brave added that Perplexity 'still hasn't fully mitigated the kind of attack described here' and that it had re-reported the issue. Perplexity's account differs: a spokesperson told Decrypt the issue 'was patched before anyone noticed' and that no user data was compromised, and Perplexity disputed the severity of the finding
  • 2026-10-16: Family. Found in an outside review of the published record on 16 october 2026: no money moved; the harm demonstrated was a leak of the user's credentials, so the case belongs with software agents.
    Show the change
    Before: transaction
    After: software
  • 2026-10-16: Inference: value. Found in an outside review of the published record on 16 october 2026: the interpretation said the vendor acknowledged the mechanism, but the vendor's statement is not in this record.
    Show the change
    Before: The shopping-agent version of EchoLeak, with the user's signed-in sessions as the authority at stake. The researchers work for a competing browser maker; the vendor acknowledged the mechanism, so the Register does not lower its confidence in it
    After: The browsing-agent version of EchoLeak, with the user's signed-in sessions as the authority at stake. The researchers work for a competing browser maker, which readers should weigh
  • 2026-10-13: Fields and sources. Claims aligned to what each linked record says, found on review.
    Show the change
    Before: 'later fixes followed'; 'vendor statements'
    After: timeline as the researcher records it, including its post-publication note that mitigation was incomplete; no vendor statement linked
  • 2026-10-13: Context: jurisdiction. Jurisdiction text was split at a comma inside parentheses.
    Show the change
    Before: Global (vendor | competing vendor as researcher)
    After: Global (vendor, competing vendor as researcher)
  • 2026-10-13: Controls: c-e1. A control has one state per case; entries in two states merged into the state the record supports.
    Show the change
    Before: failed: Session scoping; absent: Per-task isolation of logged-in sessions
    After: failed: Session scoping; Per-task isolation of logged-in sessions (absent)
Record history · 11 entries
  • 2026-10-28: No statement from Brave within 14 days of the offer.
  • 2026-10-28: No statement from Perplexity within 14 days of the offer.
  • 2026-10-22: Follow-up note sent to Brave on claims added in a correction round (the interpretation dropped 'does not lower confidence in the mechanism' and now tells readers to weigh Brave's competing interest); 14 days to reply on those points.
  • 2026-10-22: Follow-up note sent to Perplexity on claims added in a correction round (a Brave spokesperson says Perplexity did not share the patch, and the record does not show what it changed (Recovery technical, interpretation)); 14 days to reply on those points.
  • 2026-10-20: Source added: Mitigating Prompt Injection in Comet (Perplexity Security Team).
  • 2026-10-20: Source added: Perplexity's Comet browser naively processed pages with evil instructions (The Register, Thomas Claburn).
  • 2026-10-20: Source added: Perplexity Comet Flaw Exposed User Data to Attackers, Brave Reports (Decrypt, Jason Nelson).
  • 2026-10-16: Interpretation reworded for readers before sign-off; its meaning is unchanged.
  • 2026-10-14: Right of reply offered to Perplexity.
  • 2026-10-14: Right of reply offered to Brave.
  • 2026-10-14: Checked by the editor against the linked records.

Controls that address what went wrong

2 controls missing or failed; 1 in place and worked. The line under each is the concrete form it would have taken in this case.

Retrieved content as data
Content-instruction separation
Failed · Inputs layer
Least-privilege credential scoped to task
Failed: Session scoping. Absent: Per-task isolation of logged-in sessions.
Failed · Envelope layer
Coordinated disclosure program
Disclosure, albeit by a competitor
Worked · External layer

New cases like this, once a week. A short email when a case, signal or rule touches software agents. Free; unsubscribe in one click.

Get the weekly email

How it unfolded, layer by layer

MandateWhat it was told to do
Who deployed it: A user asking the agent to summarize a page.
ActorWhat acted
The Comet browsing agent, holding the user's logged-in sessions
InputsWhat it could see
Hidden instructions in page content, including a comment on a public forum
DecisionHow it chose
The agent treated page text as instructions, navigated to the user's account and email, and read a one-time code
EnvelopeWhat it was allowed to do
Authority it held: The agent carried every session the user had; nothing scoped it to the page being summarized.
ActionWhat it did
Exfiltration of the user's email address and a one-time code via a post the attacker could read
OutcomeWhat happened
Caught first by researchers. Severity: none (demonstration).
EvidenceWhat can be proven
Record of the event: Researcher disclosure with demonstration and a dated timeline; note that the researcher makes a competing browser and is building agentic browsing for its own assistant, Leo. Perplexity's statement is not in the Brave post; to the press, a Perplexity spokesperson said the issue was patched before anyone noticed, that no user data was compromised and that Perplexity worked directly with Brave, and Perplexity disputed the severity of the finding.
RecoveryWhat could be stopped, undone, answered for
Technical recovery: Patches: an initial fix on 27 July, found incomplete on retest, and a fix that appeared to work by 13 August; a Brave spokesperson said Perplexity did not share the patch, and the sources do not say what it changed. Separating page content from the user's instructions is Brave's recommendation, alongside checking actions against the user's request, asking the user to confirm sensitive actions and isolating agentic browsing. In a later post (22 October 2025) that does not mention this report, Perplexity said Comet marks external content as untrusted in prompts, runs classifier checks on new content before acting and pauses for the user's confirmation before actions such as sending an email or making account changes. Accountability: Coordinated disclosure between competitors.

The same gap in other cases

Cases where the same control was missing or failed. Those in another world are the cross-domain comparisons the Register exists to make.

ControlSame worldOther worlds
Retrieved content as dataGitHub MCP leak 2025, EchoLeak 2025, Claude Code [bot] trust 2026Gemini calendar invite 2025 (software acting on machines)
Least-privilege credential scoped to taskGitHub MCP leak 2025, PocketOS 2026, Claude Code [bot] trust 2026, Pydantic AI: a web page can make a…·

Cost and accountability

Severitynone (demonstration)
AffectedNot recorded
Costnone
Regulatory or legal consequencevendor patches
Technical recoveryTechnical recovery: Patches: an initial fix on 27 July, found incomplete on retest, and a fix that appeared to work by 13 August; a Brave spokesperson said Perplexity did not share the patch, and the sources do not say what it changed. Separating page content from the user's instructions is Brave's recommendation, alongside checking actions against the user's request, asking the user to confirm sensitive actions and isolating agentic browsing. In a later post (22 October 2025) that does not mention this report, Perplexity said Comet marks external content as untrusted in prompts, runs classifier checks on new content before acting and pauses for the user's confirmation before actions such as sending an email or making account changes.
AccountabilityCoordinated disclosure between competitors
InterpretationWhy it matters beyond its domain. The browsing-agent counterpart of EchoLeak (REG-0021): text in content the agent read was carried out as instructions with the user's authority, here the user's signed-in sessions. Unlike EchoLeak, where the instructions arrived unasked in an email and were picked up when the user asked Copilot an ordinary question, the attack ran only after the user asked Comet to summarize a page carrying the attacker's hidden instructions. The record does not show what Perplexity's patches changed, and Brave and Perplexity disagree on whether the fix was complete. The researchers work for a competing browser maker, which readers should weigh. Signed by Saurabh Bhatnagar on 2026-10-21.

Right of reply

Named partyStatus
PerplexityOffered 2026-10-14; no statement as of 2026-10-28Respond for Perplexity
BraveOffered 2026-10-14; no statement as of 2026-10-28Respond for Brave

Help shape the Register

A person reads every answer; changes it leads to are logged in the methodology. To dispute a claim or reply for a named company, use Respond, dispute, or submit.

Did this page help with what you came to do?