A plugin refused to load

Reading the TVO-PLUGIN codes.

Written By Dustin

Last updated 15 minutes ago

tovio plugin doctor

The common ones

CodeMeaning
001Manifest failed validation.
002No plugin with that id is installed — or plugin install could not resolve the source. Local/offline and HTTPS sources are supported; an unsupported scheme, a bad URL shape, a TLS or connect failure, or a non-200 response all land here.
003Integrity failure — artifact hash does not match the manifest. Fail-closed, no override.
004Bound to an event the manifest does not declare.
005Capability denied by the manifest-binding intersection (deny by default).
006Sandbox failure — corrupt or non-WASM artifact, or an ungranted host import.
007Timed out on fuel or wall-clock bounds.
008Output failed schema validation, so the result is coerced to an error.
011 / 012Protected plaintext / network denied at execution preflight.
013A protected-plaintext grant was refused while authoring the binding or hook.

When a plugin blocks your commit or land

TVO-PLUGIN-009 and TVO-PLUGIN-010 are the two you are most likely to meet, and they are not load failures — they are an enforcing gate doing its job. They have their own article.

"Built without plugin execution"

Your binary lacks the plugins-wasm feature, so it cannot run a real plugin. This is harmless while nothing enforcing is bound — but it is not harmless at a required gate: there it blocks fail-closed with TVO-PLUGIN-010, because an un-runnable required gate must never silently let an operation through. Rebuild with the feature.

Integrity failures are not a bug to work around

003 means the artifact is not what the manifest says it is. Re-download from the publisher; if it fails again, report it to the publisher rather than forcing it.

On a Forge

  • 014 — an enforcing binding refused by the org plugin policy.
  • 015 — landing blocked because a required plugin has no trusted, attested passing result. Absent, pending, or failing all block; so does a passing result authored by someone who is not an approved attester.
  • 016 — server-side plugin registration refused.

Reporting it

The code and the plugin id if it is a public plugin. Never an internal plugin id, its manifest, or its output — plugin output routinely quotes your source.