Errors and exit codes
Without --json, CLI errors are written to standard error as human-readable text beginning with error:. With --json, errors contain schema_version and an error object with code, message, and exit_code.
| Exit code | Error code | Meaning | Recovery |
|---|---|---|---|
0 | None | Success | Consume stdout. |
1 | operation_failed | Vault read, write, or transcription failure, an unsupported import format, or an unhealthy doctor report | Check the reported action or inspect the diagnostic report and confirm app and CLI compatibility. |
2 | not_found | Meeting, audio file, or other requested data not found | List meetings again and use a returned ID, or verify the file path you passed. |
3 | vault_not_found | Vault not found at the resolved path | Start Loofah once or pass --vault-path. |
4 | output_exists | Export output already exists | Choose another path or explicitly pass --force to replace the file. |
Invalid arguments use the invalid_arguments error code with Clap’s nonzero exit code.
MCP reports missing meetings as invalid parameters. Vault and serialization failures are internal MCP errors.
Never recover by editing vault files directly; go through the CLI’s write commands or the desktop app. When a write command fails after creating a meeting, the error names the new meeting id — finish the job against that id instead of retrying from scratch (for example loofah sessions note ID --set after a failed note write, or loofah transcribe ID after a failed import --transcribe). The MCP server remains read-only.