Skip to content

perplexity-user-mcp 0.8.42 — Headed Bootstrap reads cookies as anonymous despite successful login (regression from 0.8.41 fix) #5

@luvher

Description

@luvher

Product

VS Code extension (perplexity-vscode)

Version

perplexity-user-mcp 0.8.42-universal

MCP Client (if applicable)

Other

Perplexity tier

Pro

OS

Windows 11 Pro 10.0.26200, Node.js: v22.21.1

Browser used by the MCP server

Google Chrome 147.0.7727.139

What happened?

IDE: VS Code with Antigravity extension (Claude Code as MCP client)
Account tier: Pro
Transport: stdio — daemon proxy (http-loopback)

What happened
After updating from 0.8.39 to 0.8.42 (following the fix announced for PR #4 / 0.8.41), performing a clean reinstall, purging the old personal profile, and logging in fresh via Perplexity: Login from the VS Code dashboard (email one-time code, browser window opened and closed correctly after successful authentication), the daemon still reports anonymous mode on every request. perplexity_reason and perplexity_research remain unavailable.

Summary
The vault decrypt fix from PR #4 shipped correctly in 0.8.42 — unseal-verify passes. However, the downstream step (loading the decrypted cookies into the headed bootstrap browser context) still does not work. The daemon's headed Chrome session navigates to perplexity.ai, resolves Cloudflare, checks auth — and consistently sees no session, despite the vault containing valid cookies from a successful Pro login 30 seconds prior.

The PERPLEXITY_HEADLESS_ONLY=1 entries in the log suggest a secondary spawn path where headed sessions are skipped entirely, which may be a separate regression or an incomplete guard in configureDaemonRuntime.

Expected: After a successful Perplexity: Login, the daemon's next reinit should load the session cookies and report tier: Pro.
Actual: Every reinit reports Not authenticated (anonymous mode), regardless of how many times login is repeated.

Doctor output (optional, recommended)

## [OK] vault -- pass
- [OK] encryption -- AES-256-GCM (vault.enc)
- [OK] unseal-path -- env var (keychain unavailable — expected on headless Linux)
- [OK] unseal-verify -- vault.enc decrypts cleanly with the active unseal material

## [X] probe -- fail
- [X] probe-search -- probe returned no sources (latency 3977ms)
  - Hint: Session may be anonymous — run login, then --probe again.

Relevant logs or errors

1. Login was genuinely successful — meta.json confirms Pro tier and timestamp:
{
  "name": "default",
  "displayName": "default",
  "createdAt": "2026-05-11T05:39:13.636Z",
  "loginMode": "manual",
  "tier": "Pro",
  "lastLogin": "2026-05-11T05:42:18.926Z"
}
vault.enc and meta.json share the same write timestamp 07:42:18 — cookies were saved by the login runner.

2. Vault decrypts cleanly (fix from PR #4 works for this part):
[OK] unseal-verify -- vault.enc decrypts cleanly with the active unseal material

3. But every headed bootstrap immediately after reports anonymous:
[perplexity-mcp] Reinit requested — closing current context and reloading cookies.
[perplexity-mcp] Starting headed bootstrap (solving CF + loading account info)...
[perplexity-mcp] Cloudflare resolved in 1s.
[perplexity-mcp] Not authenticated (anonymous mode).   ← always, every reinit
[perplexity-mcp] Headed bootstrap complete.
[perplexity-mcp] Launching headless browser...
[perplexity-mcp] No authenticated session (anonymous mode)
This sequence repeats identically across multiple reinit cycles — Cloudflare resolves fine, but the session check always returns anonymous. The vault was decryptable, the cookies were written, but the daemon's headed bootstrap doesn't load them.

4. PERPLEXITY_HEADLESS_ONLY=1 is set during some spawns:
[perplexity-mcp] Skipping headed session (PERPLEXITY_HEADLESS_ONLY=1).
[perplexity-mcp] No cached account info found.
[perplexity-mcp] Launching headless browser...
[perplexity-mcp] No authenticated session (anonymous mode)
This indicates the daemon was spawned without the ability to run a headed session at all during those cycles — suggesting the passphrase/env injection from buildDaemonEnv still does not reliably reach the daemon on all spawn paths.

5. audit.log confirms all tool calls carry clientId: anon throughout — no authenticated session was ever established, including after the successful login at 05:42.

6. Daemon was running with two different PIDs during this session:
Attached to daemon pid=5116 port=65509   ← first instance
Attached to daemon pid=18172 port=61963  ← second instance after VS Code reload
Port drift still occurs across restarts, which creates stale loopback configs (known issue, tracked for 0.8.43) — but the auth failure is independent and reproducible on both daemon instances.

Steps to reproduce
Fresh install of 0.8.42 on Windows 11 with Antigravity (Claude Code MCP client), stdio-daemon-proxy transport
Run Perplexity: Login from VS Code command palette
Browser opens → enter email one-time code → browser closes (login confirmed successful)
Call perplexity_reason or perplexity_models from Claude Code → Account tier: Anonymous
Perplexity: Login repeated → same result

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions