docs

AI issue summaries and fix prompts

Copy a fix prompt for any issue, or summarize it with your own Anthropic or OpenAI key. What each sends, where it goes, how long it is kept and how to turn it off.

Unhandled has two AI helpers on the issue page. Copy fix prompt works for every organization and calls no AI provider. Summarize calls a model, but only with an API key your organization brings, and only after an admin turns it on.

Unhandled pays for no model usage and sends no customer data to an AI provider of its own. Without a key, no issue data leaves Unhandled.

Copy fix prompt

Copy fix prompt on an issue copies a Markdown prompt to your clipboard. The arrow next to it copies a variant for Claude Code or Cursor, written for an agent that works in your repository: it asks the agent to find the frames, write a failing test, fix the root cause and run the tests.

Unhandled builds the prompt when you click. It describes the occurrence you are looking at on the issue page, or the latest one in the selected environment and time range on the other tabs:

  • the issue's title, level, status, culprit, first and last seen, regression time and first and latest release;
  • the exception type and message, and each exception of the cause chain (up to 5), with up to 10 frames each, starting at the first in-app frame;
  • up to 3 lines of source before and after the first 3 in-app frames, when the SDK sent source context or a source map resolved it;
  • the request that failed: method, route, status and URL;
  • up to 40 spans and logs from the occurrence's trace, from the hour before the error;
  • up to 25 tags;
  • up to 5 similar issues.

Telemetry is wrapped in fenced blocks marked as untrusted data, so a model does not take text from your application as instructions. The prompt is capped at about 24,000 characters. When an issue has more, similar issues, tags, the trace, the request and the source are dropped in that order. The issue and its exception always stay.

Agents connected over the MCP server get the same prompt for the latest occurrence from get_issue_fix_prompt. Pass format: "chat" for the chat variant.

Redaction

Both helpers run every value through the same scrubber that cleans exceptions at ingest, whether or not the project scrubs at ingest:

  • private keys, JWTs, bearer and basic tokens, passwords in URLs, API keys (AWS, Anthropic, OpenAI, Stripe, GitHub, Slack, Google), password= and token= style assignments and card numbers become [Filtered];
  • tags whose name contains password, secret, token, auth, cookie, session, api_key, card and the other built-in names, or one of the project's own sensitive fields, become [Filtered]. The project's safe fields are left as they are.

Set sensitive and safe fields in the project's exception settings.

Only secrets are removed. Email addresses, IP addresses and other personal data inside messages, logs and tags stay as they were recorded. Add the tag names to the project's sensitive fields to keep them out.

Summarize with your own key

When AI summaries are on, the issue page shows Summarize. A member clicks it and Unhandled sends the redacted fix prompt above, for the latest occurrence, to the organization's provider. The model answers with a summary, a likely cause and a suggested fix. The page shows the provider, the model, when it was generated, by whom and how long it took.

The summary is kept with the issue, so everyone sees the same one. Regenerate writes a new one. When the issue regresses after a summary was written, the summary is marked stale until someone regenerates it. Unhandled never calls the model on its own: every call is a person's click.

Each call has a 60-second timeout and a cap of 4,096 output tokens, runs at low reasoning effort, and is not retried. An organization can make 30 summary calls an hour. If the provider rejects the key, rate-limits it, times out or declines the request, the page says so and keeps the previous summary. A second click while a summary is being generated is turned away and does not count toward the hourly limit.

Turn it on

An admin opens Settings, AI:

  1. Pick Anthropic or OpenAI.
  2. Pick a model. Anthropic offers claude-opus-5-5 (the default), claude-sonnet-5-5 and claude-haiku-5-5. OpenAI offers gpt-5.5 (the default) and gpt-5.4-mini.
  3. Paste an API key from that provider.
  4. Turn on AI summaries and save.

Saving a new key, removing the key or switching provider needs a sign-in from the last 15 minutes or your current password. Each change is written to the organization's audit trail with who made it, the provider and model before and after, and whether the key was replaced or removed. The key itself is never logged.

Unhandled encrypts the key with the application key before storing it, and decrypts it only to make a call. It is never shown again, in the app, the API or the MCP server. Members see whether a key is saved, never the key.

Where the data goes

A summary sends the prompt to the provider you picked, on your account:

  • Anthropic: https://api.anthropic.com/v1/messages;
  • OpenAI: https://api.openai.com/v1/responses.

Requests to OpenAI set store: false, so OpenAI does not keep the prompt as a stored response. What the provider does with it otherwise follows your agreement with that provider. Unhandled adds no other recipient.

Retention

Unhandled keeps the latest summary of each issue, with the provider, model, token counts and the member who generated it, until the issue is deleted. Deleting the organization deletes its key and its summaries. The prompt itself is not stored.

Turn it off

Open Settings, AI and turn off AI summaries, or choose Remove the saved key, which also turns it off. From then on Summarize is gone and nothing is sent. Summaries written earlier stay on their issues. Copy fix prompt keeps working.