Bot Identities

September 1, 2026 · View on GitHub

Fullsend agents authenticate as GitHub Apps; the table below also includes non-agent bots that appear in trusted-actor lists. Multiple agent roles may share a single app identity. The GitHub App login is determined by the role field in each harness file (in the fullsend-ai/agents repo); slug is an install-time hint the mint never reads.

AgentGitHub App loginNotes
codefullsend-ai-coder[bot]role: coder. Opens PRs from issues
fixfullsend-ai-coder[bot]role: coder. Shares the coder app; pushes to existing PR branches
reviewfullsend-ai-review[bot]Posts review comments
triagefullsend-ai-triage[bot]Posts triage summaries on issues
retrofullsend-ai-retro[bot]Files retro issues, posts PR comments
prioritizefullsend-ai-prioritize[bot]Prioritizes issues
renovaterenovate-fullsend[bot]Dependency updates (not a fullsend agent)

When referencing bot identities in code (e.g., trusted actor lists, dispatch filters), always verify the login name against this table. Do not assume each agent role has a unique app identity — the fix agent reuses fullsend-ai-coder[bot], not a separate fullsend-ai-fix[bot].

Shared vendor identity: The default deployment model uses a shared, vendor-owned App (per ADR 0029/0059/0068). For adopting orgs other than fullsend-ai, the review bot's login is fullsend-ai-review[bot], not ${ORG_NAME}-review[bot]. Any code that gates on the review bot's identity must match both the org-specific form (${ORG_NAME}-review[bot]) and the shared vendor form (fullsend-ai-review[bot]). See #5550 for the bug this caused.

REST vs. GraphQL login format: the [bot] suffix above is the REST/App-slug form. GitHub's GraphQL API omits it — a bot author's login field comes back as fullsend-ai-coder, not fullsend-ai-coder[bot], with __typename: "Bot". Comparing a GraphQL-sourced login against a literal "...[bot]" string never matches (see #5575) — match on __typename == "Bot" plus the un-suffixed login instead.

gh pr view --json format: the gh pr view --json author CLI command uses a different schema than raw GraphQL — it exposes .author.is_bot (boolean) and .author.login (with an app/ prefix, e.g. app/fullsend-ai-coder), but does not expose __typename. When using gh pr view --json, check .author.is_bot == true plus .author.login against the app/-prefixed name (see #5536).