Skip to main content
Self Diagnostics lets your AI agents proactively report their own issues back to your team. Agents often understand their own failures better than we do: if your agent keeps failing to install a package or can’t find something a user is asking for in your docs, it can just tell you, and the report shows up alongside your other signals.

How it works

When you enable Self Diagnostics, the SDK gives your agent a reporting tool and prompt-engineers its description from your category definitions. Whenever the agent hits one of those situations, it reports it, and Raindrop records it as a signal with signal_type: "agent", grouped separately from classifier- and SDK-tracked signals so agent-reported issues don’t get lost in the mix. See Default signal categories for what it catches out of the box.

Using Self Diagnostics

Enable it

Self Diagnostics is enabled through the SDK when you instrument your agent. Add selfDiagnostics: { enabled: true } to your wrap() call:
For full SDK integration details, see:

Customize the categories

You can define your own signal categories and add domain-specific guidance. When you provide custom signals, they replace the defaults entirely:
The SDK auto-generates the tool prompt from your signal definitions.

Report without wrap()

Beyond wrap(), the SDK offers two additional approaches for more advanced use cases:
  • createSelfDiagnosticsTool() — a standalone self-diagnostics tool for agents that don’t use wrap(). See the TypeScript SDK docs.
  • selfDiagnose() — manually report a diagnostic from your own code, no LLM tool call needed. See the TypeScript SDK docs.

View reports in the dashboard

Self Diagnostics reports appear in a dedicated Self Diagnostics tab on the Signals page. From there you can:
  • Track issue rates over time with signal charts
  • Drill into individual incidents to see the agent’s description of what went wrong
  • Set up alerts to get notified when problems spike

Reference

Default signal categories

Out of the box, the agent detects and reports four categories of issues: Providing custom signals replaces these defaults entirely (see Customize the categories).

Troubleshooting

Reports aren’t showing up. Confirm selfDiagnostics.enabled is true in your wrap() config and that your agent has run since. Reports land under the Self Diagnostics tab on the Signals page, not the main Signals list. Custom categories replaced the defaults. That’s expected: custom signals replace the four defaults entirely. Re-add any defaults you still want alongside your custom ones.