Skip to main content

What is Self Diagnostics

Self Diagnostics allows your AI agents to proactively report their own issues back to your team. Agents are exponentially smarter than before. They often understand their own failures better than we do. Imagine your agent keeps failing to install a package, or can’t find something a user is asking for in your docs. With Self Diagnostics, it can just tell you.

Default signal categories

Out of the box, the agent will detect and report four categories of issues: You can also define your own custom categories — see Customization below.

Enabling Self Diagnostics

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:

Customization

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.

Viewing Self Diagnostics in the dashboard

Self Diagnostics reports appear in a dedicated Self Diagnostics tab on the Signals page. From here 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

How it relates to Signals

Self Diagnostics signals are a special type of Signal. While standard signals are detected by Raindrop’s classifiers or tracked manually via the SDK, Self Diagnostics signals come directly from the agent itself. They appear with signal_type: "agent" and are grouped separately so you can distinguish agent-reported issues from other signal types.

Other ways to report Self Diagnostics

Beyond wrap(), the SDK offers two additional approaches for more advanced use cases:
  • createSelfDiagnosticsTool() — Create 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.