---
title: GitHub tracker
description: Issues via the gh CLI. Zero API tokens to manage — gh auth login handles it.
---

<div style={{ display: "flex", alignItems: "center", gap: "0.75rem", margin: "0.5rem 0 1.25rem" }}>
  <Logo name="github" size={28} />
  <span style={{ fontSize: "0.8125rem", color: "var(--color-fd-muted-foreground)" }}>Slot: <code>tracker</code> · Name: <code>github</code></span>
</div>

<PlatformSupport macos="full" linux="full" windows="full" />

The default tracker. Uses the [`gh` CLI](https://cli.github.com) for everything, so you never paste a PAT into AO.

## Setup

```bash
gh auth login
```

Pick **GitHub.com → HTTPS → Login with a web browser**. Then:

```yaml title="agent-orchestrator.yaml"
tracker: github
projects:
  myproject:
    repo: owner/repo
```

`repo` must be `owner/name` (not a URL) — it's what `gh` expects.

## How it's used

| Operation | `gh` command invoked |
|---|---|
| Fetch issue | `gh issue view <num> --json title,body,...` |
| Create issue | `gh issue create` |
| Comment on issue | `gh issue comment` |
| Close issue | `gh issue close` |
| List issues | `gh issue list` |

## Config

No plugin-level config keys. The `github` tracker doesn't need anything beyond your `gh` auth.

## Troubleshooting

- **`gh: authentication required`** — run `gh auth login`.
- **`could not resolve to an Issue`** — the issue number is wrong, or `repo` doesn't match the project.
- **Rate limits** — AO batches and paces issue lookups, but heavy bursts can still hit limits. `gh` reports them clearly in logs.
