---
title: Pull request status and review history
description: Check open pull requests by repository and author, read review-state counts and draft or conflict flags, pick an output format, and compare captures.
url: "https://issue-graph.dev/docs/status"
docs_index: /llms.txt
lastUpdated: "2026-09-27T00:00:00.000Z"
navTitle: "Status and history"
canonical_url: "https://issue-graph.dev/docs/status"
---

# Pull request status and review history

> For an index of all documentation, see [/llms.txt](/llms.txt).

## Check PR status

Pass one or more repositories and the authors to count:

```bash
issue-graph status vercel-labs/portless --author ctate,Railly
issue-graph status vercel-labs/agent-browser vercel-labs/portless --author ctate,Railly
```

`--author` is required. Repeat it or separate authors with commas. Name repositories as arguments or with a repeatable `--repo owner/repo`. Inside a GitHub checkout, you can omit them and status uses the checkout's `git remote`. Repository and author matching and deduplication are case-insensitive.

## Choose a view

```bash
issue-graph status vercel-labs/portless --author ctate,Railly --view projects
issue-graph status vercel-labs/portless --author ctate --view prs
```

| View                | Output                                                                                |
| ------------------- | ------------------------------------------------------------------------------------- |
| `authors` (default) | Counts by author and repository, including known zero counts                          |
| `projects`          | Repository totals and counts per author                                               |
| `prs`               | PR titles, URLs, head identifiers, assignees, requested reviewers, and graph commands |

## Choose an output format

In a terminal, status prints an aligned table that falls back to a narrow layout on small screens. In a pipe, it prints versioned JSON. Set `--format auto|human|markdown|json` to choose explicitly.

```bash
issue-graph status vercel-labs/portless --author ctate,Railly --format markdown
issue-graph status vercel-labs/portless --author ctate,Railly --json
```

For status, `--json` writes to stdout and takes no filename. Schema version 1 includes the scope, query timestamps, coverage, PR details, author and project rows, totals, and next steps. `NO_COLOR` disables styling. Progress messages go to stderr.

## Read the counts

Each metric contains `count`, `prIds`, and `unknownIds`. A `null` count, shown as `?` in human output, means the total is unknown, and the known matching IDs give a lower bound.

Check `coverageComplete` and each repository's `coverage` before you use totals. When one repository fails, its aggregate counts and the portfolio totals become unknown, while complete sibling repositories keep their counts. Query timestamps record the collection window.

The review states partition open PRs: review required, changes requested, approved, no review required, and unknown. The draft, conflict, and unassigned flags are independent and can overlap with each other and with any review state.

Ready for review means the PR isn't a draft. To find non-draft PRs with no assignee, filter `pullRequests` for `isDraft === false` and an explicitly empty `assignees` array. Mergeability or assignees that status couldn't read stay unknown.

Status collects review state and metadata only. Before merging, check CI, code review findings, and unresolved review threads separately.

## Pagination and exit codes

Status reads PRs in pages of 50 and also paginates assignees and reviewer requests.

| Flag              | Default                  | Range     |
| ----------------- | ------------------------ | --------- |
| `--concurrency N` | 4 repositories           | 1 to 32   |
| `--max-pages N`   | 100 pages per connection | 1 to 1000 |

Coverage becomes incomplete when status hits a cap, an access failure, a malformed response, or pagination drift it can detect.

| Exit code | Meaning                                                            |
| --------- | ------------------------------------------------------------------ |
| `0`       | Complete inventory and any requested comparison                    |
| `1`       | Incomplete evidence or runtime failure; inspect any partial report |
| `2`       | Invalid arguments or incompatible options                          |

## Save and compare captures

Add `--save` to keep a local capture:

```bash
issue-graph status vercel-labs/portless --author ctate,Railly --save
issue-graph status vercel-labs/portless --author ctate,Railly --since last --save
issue-graph status vercel-labs/portless --author ctate,Railly --since /path/to/previous.json --json
```

Captures are immutable JSON files under `~/.issue-graph/status/<scope-hash>/`. Set `ISSUE_GRAPH_HOME` to change the storage root.

`--since last` loads the latest capture for the same repositories and authors before fetching new data, regardless of their order or case. `--since PATH` accepts a saved snapshot or an older status JSON export. A missing, corrupt, future, or mismatched baseline returns an error.

`--no-save` prevents saving and can't be combined with `--save`. Combine it with `--since` to compare without saving the new capture.

## Read changes

Human output includes a Changes section. JSON adds `history` when comparing and `snapshot` when saving. Changes cover review state, drafts, conflicts, heads, assignments, requested reviewers, additions, departures, and counts.

Status queries PRs that dropped out of the new inventory again to tell merged, closed, and unverified departures apart. Unknown data and incomplete baselines limit which transitions it can report.

Read [Permissions and privacy](/docs/security) before you store or share captures.

---

For a semantic overview of all documentation, see [/sitemap.md](/sitemap.md)

For an index of all available documentation, see [/llms.txt](/llms.txt)