--- title: "Guide: debugging" description: "smabar plugin reference: Guide: debugging" canonical: "https://smabar.com/docs/plugin-ref-guide-debugging/" lang: en --- # Guide: debugging > smabar plugin reference: Guide: debugging Canonical HTML version: https://smabar.com/docs/plugin-ref-guide-debugging/ · Language: en · Publisher: smabar (https://smabar.com) --- [Build my plugin](https://smabar.com/build-my-plugin.md) · [All references](https://smabar.com/docs/plugin-ref-index.md) · [Install the ZIP](https://smabar.com/docs/install-plugin-zip.md) Source: smabar 1.5.0, revision `a019f2563965edc37a5e8d84742ea1ff2fa6f824`. [Export metadata and checksums](https://smabar.com/plugin-reference/export.json). This is an offline reference. MCP calls quoted below describe the connected workflow; use the linked documents and create local files instead. Live state, installed plugins, available providers and the user's active theme are unknown. Never claim a live check. Read with [styling](https://smabar.com/docs/plugin-ref-styling.md) and [examples](https://smabar.com/docs/plugin-ref-examples.md). ## status ```json "plugin_list shows every plugin with status starting/running/failed/stopped, the failure reason, its code folder, its data directory, and updateAvailable for a bundled plugin whose replacement is waiting for the user. A python plugin that is starting with a reason is waiting for the managed Python runtime (download or a failed download that smabar retries by itself); a failed reason that ends in 'restarting in …' is a temporary failure the supervisor retries, one that ends in 'giving up until the plugin folder changes' is parked until you fix and save the plugin." ``` ## logs ```json "plugin_logs(id) is the one call that answers \"why did that not work\". It returns TWO lists. pluginEntries carries a source per entry: \"log\" (your app.log calls), \"stdout\" (anything you printed that was not JSON-RPC), \"stderr\" (a Python traceback lands here), \"core\" (smabar ignored malformed optional input or rejected one operation, with the supported alternative), and \"shell\" (see markup below). Repeated identical core diagnostics are written once. coreEntries is what smabar said ABOUT your plugin: it started, it crashed, it is in restart backoff, its manifest is invalid. A plugin that dies before its first line writes nothing at all into pluginEntries, so always read both. Filter with level, contains and limit. plugin_logs WITHOUT an id returns the bar's own log instead, including its UI (target smabar::shell) and its dependencies." ``` ## markup ```json "The sanitizer rewrites your HTML and REMOVES what it does not allow — a