arXiv Assistantan Omarchy plugin

Privacy and security

Vibe coded: check before you trust

This plugin was written with Claude Opus 5.5. Like every Omarchy plugin it runs unsandboxed inside omarchy-shell, with your permissions. The sandbox described here confines the AI engine, not the plugin itself. Read the code before installing it.

What runs

Network

DestinationWhenWhat
export.arxiv.orgEvery refresh (default 30 min), and when starring by identifierListing queries for your categories, at most one every 3 seconds, cached on disk
arxiv.orgSummarisingThe source archive or PDF of each starred paper
Your AI providerSummarisingThe prompt and the paper, plus whatever the engine reads from your extra folders, through Claude Code or your command, under your own account
cdn.jsdelivr.netThe first time the viewer opensKaTeX 0.16.11 and marked 12.0.2, stored locally afterwards

Requests to arXiv identify themselves as omarchy-arxiv-assistant/1.0 with a link to this project. Nothing else is sent anywhere: no analytics, no accounts.

Files

PathContents
~/.local/state/io.github.pierrecagne.arxiv/starred.json, reports.json, digest.log, the viewer's assets (web/) and the scratch folder for papers being summarised (work/)
~/.cache/io.github.pierrecagne.arxiv/The cached listings
$XDG_RUNTIME_DIR/io.github.pierrecagne.arxiv/The running viewer's secret, and the page that opens it in your browser; readable by you only, and cleared when you log out
Your reports folderOne Markdown file per report, readable by you only

The plugin writes nowhere else, and never changes your configuration beyond what Omarchy itself stores for the widget.

Other accounts on your computer

Any account can list the command lines of your programs, so nothing personal goes on one. Your settings, including who the reports are for, reach digest.py on its standard input, and digest.log, which records them, is readable by you only. So are the reports, which can quote your own notes, and the scratch folder they are written in; reports from earlier versions are made so the next time you run a summary or open the viewer. A reports folder the plugin creates is yours only too; one you chose keeps the permissions you gave it. What command lines still show is your arXiv categories, the identifiers and links of papers you look up or open, folder paths, the model name, notification text and a custom command itself. The report viewer has its own protection, below.

Untrusted papers

A paper is text written by a stranger and handed to a model that can read files. The plugin defends against a paper that tries to steer the model in four ways:

  1. The sandbox (on by default) limits what Claude Code can read to the paper and the folders you allow. See how it works and how it was tested.
  2. No writes, no shell and no web for Claude Code, whatever the sandbox setting.
  3. The prompt tells the model to treat the paper as material, never as instructions, and to report any attempt.
  4. The source archive is filtered: only plain text files (.tex, .bbl, .bib, .sty, .cls, .txt) under 4 MB are extracted, flattened into one folder, and nothing can be written outside it.

The report viewer

Reports are written by a model from untrusted papers, so the viewer treats them as untrusted too:

This was checked with a planted report containing a script tag, an image with an onerror handler, an outside image and a javascript: link: none of them ran or loaded, and the mathematics still rendered.

Limits

Found a problem? Please open an issue on GitHub.

← AI engines & sandboxTroubleshooting →