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, orchat_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)
- Download
pavri-jetbrains-<version>.zipfrom your tenant's distribution channel. - In your JetBrains IDE:
Settings → Plugins → ⚙ → Install Plugin from Disk… - Restart the IDE.
- Verify: open
Help → Show Log in Files…and search forpavri. You should see one of:AI Assistant bridge active,AI Assistant not installed; using heuristic attribution only, orAI Assistant API mismatch — falling back to heuristic.
Marketplace publishing is deferred to CAP-3.1.
Failure modes
| Symptom | Likely cause | Fix |
|---|---|---|
| No events at gateway, plugin log says "sensor unreachable" | pavri-endpointd not running | systemctl start pavri-endpointd (Linux) or relevant macOS launchd / Windows service control |
| Plugin doesn't load on a freshly upgraded IDE | IDE version past plugin's untilBuild | Update plugin to a build that supports your IDE's major version |
Edit attribution is always user_typed even after AI Assistant Apply | AI Assistant changed its CommandProcessor name pattern | Open an issue with the empirical name; pattern list lives in EditAttributionListener.AI_ASSISTANT_APPLY_PATTERNS |
ai_assistant_present=heuristic_fallback in events | Reflective bridge to AI Assistant API broke | Heuristic 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.