Skip to content
DocsErrors

PluginsEarly

Errors

Every error code a plugin can meet, and where it comes from.

From the plugin interface of gr 0.2.16 (API 0.1, 0.2, 0.3). gr plugin api errors prints it on your machine.

These codes name what went wrong in a failed call, in gr plugin check and gr plugin status, and in a plugin's log. "Raised by" says which part of Graphide refuses: check is gr plugin check, host the process the plugin runs in, tests the test host.

CodeMeansRaised by
manifest.parseplugin.toml does not parsecheck
manifest.namethe name's pattern, or a reserved or taken namecheck
manifest.sizethe folder over 2 MiB or 200 files; a language pack's, a plugin with [[languages]], over pack_bytes or pack_filescheck
manifest.versionthe version is not semvercheck
manifest.apian api the host does not servecheck
manifest.descriptionthe description is missing or over 300 characterscheck
manifest.mainthe main file is missing or its extension is not .ts, .tsx, .js or .jsxcheck
manifest.unknown_keya key the schema does not have; kept (a warning)check
contribution.namespacean id or command not starting with <name>.check
contribution.duplicatetwo contributions with one idcheck
contribution.valuea contribution's field missing, or holding a value the schema does not have: a dock, an icon, a side, a static tree filecheck
capability.unknowna capability or scope the schema does not havecheck
capability.scopea scope that does not parse, or a call outside its scopecheck, daemon
keys.notationkeys that are not Vim notationcheck
keys.targeta key bound to a command the plugin does not declarecheck
keys.reservedone unmodified printable key in normal or visual mode, or any unmodified key in insert modecheck
keys.takena default the preset, the defaults or another plugin binds; left unbound (a warning)check, app
settings.kindan unknown kind, or a default of the wrong kindcheck
limits.over_capa limit over its capcheck
event.unknownan event name the schema does not havecheck
api.removeda name that was in 0.1 before it shipped and is gone: the message names what to write instead (removed)check, host
event.undeclaredthe script handles an event the manifest does not declarecheck
eager.reasoneager = true without eager_reasoncheck
handler.nonea declared command, panel or picker with no handler (a warning; a panel may be static)check, host
fixtures.shapea world that is not a world's shape: fixtures/world.json, a render's state, or what a test gave t.fixturescheck
script.syntaxthe script does not compile; file, line and columnhost
script.throwa handler threwhost
script.timeouta handler ran past its hard budgethost
script.stackthe stack overflowedhost
script.sizea built-in asked for more than 64 MiBhost
script.globalthe script uses a global a plugin does not have (fetch, process, Buffer, XMLHttpRequest, eval, Function); a warningcheck
result.shapea handler returned the wrong shape; the message carries a path into the valuehost, daemon, app
result.not_jsona value that is not JSON crossed the boundaryhost
result.too_largean answer would encode past 8 MiB, or (0.2) a tool's answer past tool_answer_byteshost, daemon
state.fulla $.state write past 4 MiB an instance, or a $.store write past 1 MiB a pluginhost
timers.overa timer past the 64 a plugin may have at oncehost
host.protocolthe host and the daemon speak different protocols, or a line broke the protocolhost, daemon
host.restartedthe plugin's host restarted during the eventdaemon
plugin.offthe plugin is switched off for the session: past its memory cap, its circuit breaker tripped, or a host of another protocoldaemon
tree.bounda tree over a bound; the last good tree staysdaemon, app
contribution.foreigna view, segment, set or picker the plugin does not declaredaemon
command.refuseda command outside the schema, an action off the allowlist, or a path outside the rootdaemon, app
capability.undeclareda method whose capability the manifest does not declare; or (0.2) [[tools]] in a manifest whose [allow] agents does not hold "tools"; or (0.2, a warning) [[completions]] in a manifest whose [allow] fs does not hold "read:workspace", which the editor then asks nothingcheck, daemon
capability.denieda method whose capability is declared and not granteddaemon
calls.overan event made more than 1,000 callshost
fs.refuseda path outside the root, or in the daemon's folders or a secret folderdaemon
exec.unsandboxedno sandbox on this machine, so exec is refuseddaemon
exec.rootthe root is the home folder or holds the daemon's configurationdaemon
exec.killeda program stopped at its 30 s or its 1 GiBdaemon
net.refusedplain HTTP, Graphide's own hosts, private or metadata addressesdaemon
approve.stalethe hash approved is not the current onedaemon
approve.from_agentthe caller descends from an agent, or could not be checkeddaemon
approve.capabilitya grant the manifest does not declaredaemon
api.newerthe plugin uses a name newer than the api its manifest says; set api to that versioncheck
agents.ratean agents.send past the 20 a minute a plugin may make, or an agents.start past the agents it may start in ten minutes (agent_starts); nothing was sent or startedhost, daemon
agents.bounda message, a prompt or attached text over agent_text_bytes, or a name over 80 characters; nothing was senthost, daemon, app
agents.unreachablean agents.send to an agent that is not running, is a terminal, or shows a dialog its person must answer; or an agents.start the daemon could not make (its harness signed out, the workspace starting agents faster than a person would); nothing was sent or started, and the message says whydaemon
net.secret_headera fetch to the host a secret setting is bound to sets that secret's header itself: leave it out, and the daemon puts the secret there once the person has entered itdaemon
image.refusedan image a view names that the editor cannot draw: no file of that path in the folder that runs, not a PNG, over 4 MiB or over 4096 by 4096 pixels; drawn as its alt in a box, and said once in the plugin's log and in gr plugin statusapp
terminals.overa terminal.open past the 4 a plugin may have opendaemon
graph.nonea graph.* call for a root that has no graph: plugins run in any folder a window has open, and a folder Graphide has not graphed has none. To graph a folder, run gr init in that folder; it initializes .graphide/graph.db and builds the project graph.daemon
docs.undeclaredthe plugin uses $.docs or a document event without a [documents] table in plugin.toml. A bare [documents] reads every document; languages = ["go", "markdown"] (lower case, as the highlighter names them) narrows it to those, and there is no wildcardcheck, daemon
tool.inputa tool call's input does not fit the tool's [tools.input]: not an object, a required property missing, one it does not take, or a value of another type; the message names the path ($.path, $.kinds[2]); the handler never randaemon, host
tool.timeouta tool's handler did not answer within the 30 s an agent's call waits (tool_wait_ms); it may still be running, and its answer is droppeddaemon
tool.unknowna tool call names a tool no plugin of the root offers now: not installed, not approved, switched off, or without agents:tools granteddaemon
mcp.unavailablea tool of a plugin's MCP server was called and the server is not there to answer: its start failed (the message says how, and its standard error is in the plugin's log), it exited during the call, or it failed five times in ten minutes and is off for the sessiondaemon
mcp.errora plugin's MCP server answered a tool call with an error; the message is what it said, cleaned of control charactersdaemon
mention.prefixa [[mentions]] prefix that is not 1 to 16 lowercase letters, digits and hyphens beginning with a letter, or that two of the manifest's sources sharecheck
mention.entryan entry of a mention's answer left out, the others kept: no key or label, a key twice, an attach that is not one of node, file, agent or text, a file outside the root, a node the graph does not hold, an agent not in the roster, or text without agents:write or over agent_text_bytes. Said in the plugin's log with the entry's key and why; never attacheddaemon, host
decorations.bounda set of marks over a bound (decoration_marks, decoration_bytes, decorations_root_marks) is refused, naming the bound; the set held before stayshost, daemon, app
decorations.documentsthe manifest declares [[decorations]] without a [documents] table: marks are kept true against the documents the editor mirrorscheck
query.languagea [[queries]] names a language the editor has no grammar for. A query plugin is data: [[queries]] id = "<plugin>.<name>", language (bash, c, cpp, css, diff, go, html, javascript, json, lua, markdown, nix, python, rust, sql, toml, tsx, typescript or yaml), file (a .scm file in the plugin's folder, at most 64 KiB), and [queries.captures] naming each capture's mark: { kind = "underline", style = "wavy", tone = "warning", detail = "a TODO" }, kind one of sign (text, at most 2 characters, or icon), underline (style), tint (tone, lines) or eol (text). The editor runs the query on each file of that language you have open, off the window's thread with its colours, and marks every capture's node; it needs approval like any plugin and asks for no capability. Example: ((comment) @todo (#match? @todo "TODO")) with todo = { kind = "underline", tone = "warning" }check
query.filea [[queries]] file is not a .scm file inside the plugin's folder, the folder does not hold it, or it is over query_bytes or not UTF-8check
query.syntaxa query's S-expression is not balanced: a parenthesis or bracket left open or closed twice, or a string left open; the message says the line and column in the .scm filecheck
query.capturea capture [queries.captures] names is not captured in the query's file, or the file captures a name the table does not name; a capture whose name starts with _ (@_name, for a predicate) needs no markcheck
query.compilethe editor could not compile a query for its language's grammar: a node type or field the grammar lacks, or a predicate other than #eq?, #match? and #any-of?, with their not- and any- forms (#set! is read and does nothing); said on the message line, in :plugin status and in gr plugin status, and the plugin's other queries still runapp
when.parsea when clause does not parse: the column says where (contract C4: && || ! ( ) == != < <= > >= in =~, at most 256 characters, 8 deep)check, config
when.keya when clause asks a key that is neither a context key nor a plugin's own (<plugin>.<name>); it has no value, so it is falsecheck
graph.derivedAn extracted identity cannot be changed by a plugin; the authored layer's reason is preserved. Descriptions and tags are annotations and remain writable.daemon, tests
graph.rateMore than 10 graph write calls in a second for this plugin; nothing was written by this call.daemon, tests
graph.boundMore than 1,000 ids in a graph write call; nothing was written.host, daemon, tests
lsp.no_serverno language server serves the root or the file: the root is not trusted, [lsp] switched it off, or no server for the file's language was founddaemon
lsp.unsupportedthe file's language server does not answer what was askeddaemon
lsp.failedthe language server did not answer: it failed, took too long, or the file changed twice while it was asked; the message says whichdaemon
language.ida [[languages]] has no id, its id is not a language's (lower-case letters, digits and _ . + # -, at most 40), or the plugin declares the language twicecheck
language.filea language's grammar is not a .wasm file inside the plugin's folder, or a query is not a .scm file inside it; the folder does not hold it; or a query is over language_query_bytes or not UTF-8check
language.grammara language's grammar is not a WebAssembly module, or does not export tree_sitter_<name>, where <name> is its file's name without .wasm and a leading tree-sitter-, each - and . an _; or the language has queries and no grammar to run them on. Build a grammar with tree-sitter build --wasm, or with an emscripten-free clang to wasm32 as Graphide's own tests docheck
language.linkeda warning: the editor links a grammar for the language, which colours its files, so the pack's grammar and queries go unused; its server, comments and brackets still applycheck
language.loadthe editor could not load a language's grammar (not a tree-sitter grammar it can run, or one built for a newer tree-sitter) or compile one of its queries for it (a node type or field the grammar lacks); said on the message line, in :plugin status and in gr plugin status, and the language's files open uncolouredapp
setup.unavailablethe daemon could not answer a setup call: setup.layer for a root whose graph is not open, or a setup.read it could not make; the message says whydaemon

These docs describe Graphide 0.2.16, the latest release. Something wrong or missing? Tell us onDiscord or at hello@graphide.com.