---
title: "GET /projects/{projectId}/agent-sentinel"
method: GET
path: "/projects/{projectId}/agent-sentinel"
---

# GET /projects/{projectId}/agent-sentinel

`GET /projects/{projectId}/agent-sentinel`

## Request

- Base URL: `https://api.caveman.so/api/v1`
- URL: `https://api.caveman.so/api/v1/projects/{projectId}/agent-sentinel`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/api/v1/oauth/authorize`
    - Token URL: `/api/v1/oauth/token` scopes: `payload:read`
  - HTTP bearer
  - API key in cookie `cave_access`
  - API key in cookie `__Secure-cave_identity.session_token`

GET /api/v1/projects/{projectId}/agent-sentinel on the Caveman Cloud control plane. Requires the payload:read scope. Not exposed to autonomous agents: Native user inbox of automatic work. Requires payload disclosure permission; never widens personal chat history.

## Query parameters

- `after` string, uuid

## Response `200`

Stage runs of this project's repair cases. Personal chat history is separate; results require their own disclosure checks.

- AgentSentinelPage
  - `data` object[], required
    - `id` string, uuid, required
    - `case_id` string, uuid, required
    - `definition_id` string, required
    - `definition_version` string, required
    - `status` 'queued' | 'running' | 'completed' | 'incomplete' | 'cancelled' | 'stale', required
    - `reason` string, required
    - `created_at` string, date-time, required
    - `deadline` string, date-time, required
    - `origin` string, required
    - `findings` object[], required
      - `id` string, uuid, required
      - `qualification_state` 'qualified' | 'refuted' | 'unproven', required
      - `evidence_class` 'static_review', required
      - `qualification_reason` string, required
      - `repair_state` string, required
      - `publication_state` string, required
    - `publication_state` string, required
    - `publication_reason` string, required
    - `publication_lifecycle` string, required: What the customer did with the draft pull request, as last observed on the repository: draft, open, merged or closed. Empty before the first observation.
    - `chat_turn` unknown, required
    - `spent_micros` integer, required
    - `reserved_micros` integer, required
  - `next_cursor` string, required
  - `merged_fixes` integer, required: Repair draft pull requests of this project observed merged.
  - `closed_fixes` integer, required: Repair draft pull requests of this project observed closed without merging.

## Other responses

- `401`: Authentication required.
- `403`: Native user with payload:read required.
- `404`: Project, cursor or current authority unavailable.
- `4XX`: Structured failure. `error.code` is stable; `error.request_id` is echoed in the x-cave-request-id header.
- `5XX`: Structured failure. `error.code` is stable; `error.request_id` is echoed in the x-cave-request-id header.

---

[API](https://skmtc.dev/caveman/apis/caveman-cloud-api.md) - [All operations](https://skmtc.dev/caveman/apis/caveman-cloud-api/llms.txt) - [OpenAPI document](https://skmtc.dev/caveman/apis/caveman-cloud-api/revisions/508312d01cfc?raw)
