Ask firstthe skill reads what forge recorded
Four reads, every forge has theminspect · events · app-events · logs
Then explaina failed Resource becomes an Analysis
“I asked it to email Dana and nothing happened.”
One question drives everything: a user contacts support — show me everything that happened to them. Nothing here needs a dashboard; it needs the log forge already keeps.
Ask your agent forge → app-events
you
A user (dana-reporter@…) says they asked for an email to Dana and nothing happened. What happened?
claude
forge → app-events · owner forge → app-events · trace 9f3a…77
At 14:03:40 their AI called
At 14:03:40 their AI called
draft_email; the policy engine answered needs-approval (an external send is high-risk), so the draft was staged as approval apr_01J…. No approve followed. The approval notice was created but could not be pushed — no push subscription — so the only place they saw it was the AI's reply. Nothing was sent, by design. Fixes: they say “approve it”, or enable push. Want me to replay it?From the terminal
$ ./forge inspect app-events --app hello --owner user_4fae… --json \ | jq '.[] | select(.type=="mcp.tool_call") | {at, tool:.data.tool, gate:.data.gate, trace:.data.trace_id}' { "at": "14:03:40Z", "tool": "draft_email", "gate": "pending", "trace": "9f3a…77" } $ curl -s "$FORGE_EVENTS_URL/app-events?app=hello&owner=user_4fae…&subject=trace:9f3a…77" # every hop of that one request $ ./forge explain --resource res_01J… # if a Resource failed
Which read answers which question
| Question | Ask your agent | Or run | Reads |
|---|---|---|---|
| What did this user's AI do, and what came back? | forge → app-events · owner | forge inspect app-events --owner | GET /app-events?owner= |
| Did the call arrive, and where did it stop? | forge → app-events · trace | curl …/app-events?subject=trace:<id> | every hop sharing the trace id |
| Why did that Resource fail? | forge → explain-failure | forge explain --resource <id> | GET /logs/:id → Analysis |
| Are scheduled jobs healthy? | forge → inspect jobs | forge jobs · forge events --app | fail_count · JobRan / JobRunFailed |
| Is the platform healthy, what changed? | forge → inspect health · forge → resources | forge inspect health · forge resources · forge events | GET /status.json · Deployment · Release |
| Who did what? | forge → events | forge events --app --limit 50 | ForgeEvents carry the actor · mcp.tool_call carries the host |
If you provisioned monitoring on your own stack with forge provision-monitoring, the same questions map to those boards. This site runs none.
Trace pivot caveat: today a consumer app stamps the trace id on its events; forge's own app events do not yet. Stamping it platform-side is a step-4 item.