High concern (1)Its AI agent can run commands on your computer without asking you
Medium concern (7)Signs in using another app's identityKeeps its own tables in Zotero's databaseDownloads and runs Python and PDF tools the first time you ask about a figure; someone other than its developer can change what runs at any timeA zotero:// link (a web page can open one) can make it install add-ons without asking you (from zotero-plugin-toolkit)A zotero:// link can make it run code if you approve a prompt (from zotero-plugin-toolkit)Launches programs on your computerReuses a sign-in you saved in another program
Low concern (5)Uses the clipboardStores API keys or passwordsRuns code it assembles while runningWorks with files on your computerOther programs on this computer can change your library through it
Not a concern (1)Lets programs on this computer connect through Zotero's built-in server
Where we found itIts AI agent can run commands on your computer without asking youcontent/scripts/llmforzotero.js · line 117926
Commands run as you, so they can read and change any of your files and start other programs.
name: "run_command",
Signs in using another app's identitycontent/scripts/llmforzotero.js · line 8049
Signs in as Codex CLI, GitHub Copilot for VS Code
CODEX_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
Keeps its own tables in Zotero's databasecontent/scripts/llmforzotero.js · line 4043
Tables: llm_for_zotero_chat_messages, llm_for_zotero_global_conversations, llm_for_zotero_paper_conversations
await Zotero.DB.queryAsync(
Downloads and runs Python and PDF tools the first time you ask about…content/scripts/llmforzotero.js · line 61745
The file belongs to yilewang, the developer of the original llm-for-zotero, not this plugin's developer: they can replace it at any time, and nothing checks it before it runs, and what they put there runs on your computer. The first time you ask about a figure, it downloads a 265–491 MB bundle of Python and the Poppler PDF tools from the original llm-for-zotero's GitHub release and runs it, without asking; the README doesn't mention it. What's there now is standard software: we checked the macOS (Apple silicon) bundle, and every file is from conda-forge.
const response = await fetcher(url);
A zotero:// link (a web page can open one) can make it install add-o…content/scripts/llmforzotero.js · line 166815
zotero://plugin. zotero-plugin-toolkit removed this link in version 6.0.0; this plugin is built with an older version
Services.io.getProtocolHandler("zotero").wrappedJSObject._extensions["zotero://plugin"] = pluginBridgeExtension;A zotero:// link can make it run code if you approve a promptcontent/scripts/llmforzotero.js · line 166771
zotero://ztoolkit-debug
Services.io.getProtocolHandler("zotero").wrappedJSObject._extensions["zotero://ztoolkit-debug"] = debugBridgeExtension;Launches programs on your computercontent/scripts/llmforzotero.js · line 23510
Programs it names include curl
if (!Subprocess?.call) return void 0;
Reuses a sign-in you saved in another programcontent/scripts/llmforzotero.js · line 5527
Reuses the sign-in you saved in Codex CLI
return joinLocalPath(resolveHomeDir(), ".codex", "auth.json");