Skip to main content

JetBrains Plugin

The Pavri JetBrains plugin captures chat-vs-user edit attribution from JetBrains AI Assistant inside any IntelliJ Platform IDE (IDEA, PyCharm, GoLand, WebStorm, RubyMine, Rider, PhpStorm, DataGrip, CLion). It is an enrichment client of the local pavri-endpointd sensor: it never talks to backend services directly, holds no credentials, and does not make policy decisions.

What the plugin captures

  • Chat-vs-user edit attribution for every document mutation, classified as one of user_typed, chat_apply_user, or chat_auto_agent.
  • Chat turn IDs for grouping edits with their originating prompt.
  • Model selection, when the user picks a model in the AI Assistant UI.

What the plugin does NOT do

  • Talk to gateway-svc, policy-svc, or any backend (charter I-5).
  • Cache policy snapshots or evaluate rules (charter I-2).
  • Run detection logic (charter I-1).
  • Capture raw stdin/stdout from terminal sessions.
  • Override or replace JetBrains AI Assistant.

Installation

Sideload (CAP-2.3)

  1. Download pavri-jetbrains-<version>.zip from your tenant's distribution channel.
  2. In your JetBrains IDE: Settings → Plugins → ⚙ → Install Plugin from Disk…
  3. Restart the IDE.
  4. Verify: open Help → Show Log in Files… and search for pavri. You should see one of: AI Assistant bridge active, AI Assistant not installed; using heuristic attribution only, or AI Assistant API mismatch — falling back to heuristic.

Marketplace publishing is deferred to CAP-3.1.

Failure modes

SymptomLikely causeFix
No events at gateway, plugin log says "sensor unreachable"pavri-endpointd not runningsystemctl start pavri-endpointd (Linux) or relevant macOS launchd / Windows service control
Plugin doesn't load on a freshly upgraded IDEIDE version past plugin's untilBuildUpdate plugin to a build that supports your IDE's major version
Edit attribution is always user_typed even after AI Assistant ApplyAI Assistant changed its CommandProcessor name patternOpen an issue with the empirical name; pattern list lives in EditAttributionListener.AI_ASSISTANT_APPLY_PATTERNS
ai_assistant_present=heuristic_fallback in eventsReflective bridge to AI Assistant API brokeHeuristic still works; chat_apply_user accuracy may be slightly lower until plugin update

Privacy

The plugin posts prompt text only when:

  • The workspace is not marked as private in ProtectionProfile.coding_agent.workspaces[*].privacy_strict.
  • AND the active protection profile has coding_agent.capture_prompt_text=true.

When PrivacyStrict mode is on, prompt text is zeroed before the plugin posts.


Verified against code at commit ac271ce706b6 on 2026-05-08. See docs/superpowers/specs/2026-05-08-cap-2.3-design.md for full design.