Skip to content

Troubleshooting

Start with the narrowest command that describes the failure, then move outward.

SymptomCheckLikely causeFix
auditaur apps --json returns no appsRun the Tauri app in development modeThe plugin is not registered, the app has not started, or AUDITAUR_DATA_DIR points somewhere elseRegister the plugin, restart the app, and remove test-only AUDITAUR_DATA_DIR overrides unless intentional
App appears but status is staleInspect lastHeartbeatUnixNanos and databasePathThe app exited, rebuilt, crashed, or a Tauri watcher restarted itRestart the app, then use the newest active session or pass --active
databaseReadable is falseRun auditaur doctor --db "<databasePath>"The database path is missing, locked by another process, or not readableRestart the app and check filesystem permissions for the local Auditaur data directory
schemaValid is falseRun auditaur doctor --db "<databasePath>" --jsonCLI and plugin versions disagree about the SQLite schemaUpdate the CLI and app packages together, then start a fresh session
auditaur health --json reports capability skewCompare installed package versionsThe frontend package, Rust plugin, or CLI came from different release linesUse Compatibility and align versions
Frontend logs or errors are missingRun auditaur logs --json and auditaur errors --json after a UI actionFrontend initialization did not run, capability permission is missing, or export failedInitialize @auditaur/api once, add auditaur:default, and surface onExportError during development
Invoke rows are missingSearch for direct @tauri-apps/api/core importsCalls bypass Auditaur’s invoke wrapperExport auditaur.invoke from a local wrapper and migrate imports gradually
Backend spans are not children of frontend invoke spansRun auditaur explain --trace <traceId> --jsonBackend command did not opt into IPC trace continuationPrefer #[tauri_plugin_auditaur::auditaur_command] on app-owned commands
drive inspect reports no active bridgeRun auditaur debug --require-drive-bridge --json watch --until-readydriveBridge is disabled, enabled in the wrong window, or staleEnable driveBridge in exactly one dev/test WebView and restart the app
Selector drive actions fail but bridge is activeRun drive snapshot or drive text against a broad selectorSelector is wrong, hidden, duplicated, or not visible yetUse wait --selector, add --visible-only, or target a stable test id
Multiple sessions are foundRun auditaur apps --jsonOld dev sessions are still discoverablePass --active, --latest, --session-id, --instance-id, --pid, or --db explicitly
Reports contain too much dataCheck command --limit and payload optionsFull payload capture or broad queries can include more context than neededKeep captureFullPayloads: false, use --limit, and review bundles before sharing

Use this sequence when you do not yet know where the failure is:

Terminal window
auditaur doctor
auditaur apps --json
auditaur health --json
auditaur errors --json
auditaur exceptions --json
auditaur traces --failed --json
auditaur ipc --failed --json

If the app is missing, focus on plugin registration and startup. If the app is active but telemetry is missing, focus on frontend initialization and capability permissions. If telemetry exists but causality is unclear, inspect traces and backend command instrumentation.

Discovery files live under the local Auditaur data directory:

PlatformDiscovery directory
Windows%LOCALAPPDATA%\auditaur\apps
macOS~/Library/Application Support/auditaur/apps
Linux~/.local/share/auditaur/apps

Each discovery file points to a SQLite session database. Test scripts may set AUDITAUR_DATA_DIR to isolate a run; unset it when returning to normal local debugging.

The frontend package exports batches by calling the Tauri plugin command allowed by auditaur:default. Add an onExportError callback while integrating:

await initAuditaur({
serviceName: 'my-tauri-app',
onExportError(failure) {
console.warn('Auditaur export failed', failure.error);
},
});

If this callback fires, fix the underlying Tauri capability, plugin registration, or app startup issue instead of ignoring the failure.

A healthy wrapped invoke has:

RowExpected shape
Frontend spanname = "tauri.invoke load_user" with a generated trace_id and span_id.
IPC rowcommand = "load_user" with the same trace/span ids as the frontend span.
Backend spanSame trace_id, parent_span_id equal to the frontend span id.

Use:

Terminal window
auditaur trace <traceId> --json
auditaur timeline --trace <traceId> --json
auditaur explain --trace <traceId> --json

If the frontend span exists without a backend child, use auditaur_command or the lower-level instrument_ipc helper.

Drive actions use the Tauri-native in-app bridge. They do not require browser debugging.

Terminal window
auditaur debug --app my-tauri-app --active --require-drive-bridge --json watch --until-ready
auditaur drive --app my-tauri-app --active --json inspect

drive inspect should report selectorBackend=tauri_in_app_driver and a bridge target such as targetId=auditaur-bridge. If the bridge is active but a selector fails, try a read-only diagnostic first:

Terminal window
auditaur drive --app my-tauri-app --active --json snapshot --selector body --output page.json
auditaur drive --app my-tauri-app --active --json text --selector "body" --visible-only

Review snapshots before sharing because they can include local DOM text and URLs.