Files
coder/docs/ai-coder/agents/platform-controls/git-providers.md
T
Nick Vigilante 9eba637584 docs(docs/ai-coder/agents): reformat to one sentence per line (#30700)
Reformats the Coder Agents docs under `docs/ai-coder/agents` to one
sentence per line, as the [docs style
guide](https://github.com/coder/coder/blob/main/docs/.style/style-guide/formatting.md#one-sentence-per-line)
requires. Hard-wrapped paragraphs are unwrapped and lines holding
several sentences are split, so a later edit to one sentence shows up as
a one-line diff.

Apart from the exception below, only whitespace inside paragraphs and
list items changes, and the rendered pages are the same. Comparing the
changed files against `main` word for word, ignoring whitespace and
blockquote `>` markers, finds differences only on the reworded lines.
`git diff --word-diff` is easier to read than the line diff.

59 lines that already contained an em or en dash were reworded by hand,
because `lint/emdash` treats every reflowed line as newly added. Each
uses a parenthetical, a separate sentence, or a colon after a lead-in.
Dashes on lines the reflow did not touch are left alone.

Applied with an in-progress formatter, limited to pages listed in
`docs/manifest.json` and excluding generated reference docs. This is one
of a batch of PRs that split the docs by area (21 files changed, 870
insertions(+), 1294 deletions(-)).

---
🤖 Built with AI assistance.
2026-10-15 14:38:40 -04:00

3.8 KiB

title
title
Git providers

Coder Agents leverages your existing external authentication configuration to power the in-chat diff viewer. Self-hosted GitHub Enterprise deployments require one additional setting (API_BASE_URL) for this feature to work.

GitHub Enterprise configuration

For public github.com, no additional configuration is needed.

For self-hosted GitHub Enterprise, add API_BASE_URL to your existing configuration:

CODER_EXTERNAL_AUTH_0_ID="primary-github"
CODER_EXTERNAL_AUTH_0_TYPE=github
CODER_EXTERNAL_AUTH_0_CLIENT_ID=xxxxxx
CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx
CODER_EXTERNAL_AUTH_0_AUTH_URL="https://github.example.com/login/oauth/authorize"
CODER_EXTERNAL_AUTH_0_TOKEN_URL="https://github.example.com/login/oauth/access_token"
CODER_EXTERNAL_AUTH_0_VALIDATE_URL="https://github.example.com/api/v3/user"
CODER_EXTERNAL_AUTH_0_API_BASE_URL="https://github.example.com/api/v3"
CODER_EXTERNAL_AUTH_0_REGEX=github\.example\.com

Without API_BASE_URL, Coder defaults to https://api.github.com. Clone and push still work (they use AUTH_URL and TOKEN_URL directly), but the diff viewer silently fails because Coder builds its URL-matching patterns from the API base URL.

Note

If you have both a github.com and a GHE external auth config, only the GHE config needs API_BASE_URL.

GitLab configuration

For gitlab.com, no additional API_BASE_URL is needed. Coder automatically derives it from your AUTH_URL for self-hosted instances.

Required scopes

The default GitLab scopes (read_user) are sufficient for basic authentication. To use merge request features (diffs, status checks) with Coder Agents, configure:

CODER_EXTERNAL_AUTH_0_ID="primary-gitlab"
CODER_EXTERNAL_AUTH_0_TYPE=gitlab
CODER_EXTERNAL_AUTH_0_CLIENT_ID=xxxxxx
CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx
CODER_EXTERNAL_AUTH_0_SCOPES="write_repository read_api"

The read_api scope grants read access to the API (needed for fetching merge request metadata and diffs). The write_repository scope allows pushing commits and creating merge requests.

Self-hosted GitLab

For self-hosted GitLab, set AUTH_URL and TOKEN_URL to your instance. Coder derives API_BASE_URL automatically from AUTH_URL:

CODER_EXTERNAL_AUTH_0_ID="primary-gitlab"
CODER_EXTERNAL_AUTH_0_TYPE=gitlab
CODER_EXTERNAL_AUTH_0_CLIENT_ID=xxxxxx
CODER_EXTERNAL_AUTH_0_CLIENT_SECRET=xxxxxxx
CODER_EXTERNAL_AUTH_0_AUTH_URL="https://gitlab.example.com/oauth/authorize"
CODER_EXTERNAL_AUTH_0_TOKEN_URL="https://gitlab.example.com/oauth/token"
CODER_EXTERNAL_AUTH_0_SCOPES="write_repository read_api"
CODER_EXTERNAL_AUTH_0_REGEX=gitlab\.example\.com

Note

You may also set API_BASE_URL explicitly if needed (e.g., https://gitlab.example.com/api/v4), but this is usually unnecessary.

Known limitations

GitLab

The GitLab provider has some semantic differences compared to the GitHub provider:

  • Approved uses GitLab's threshold-based approval (e.g., "all required approvals met") rather than GitHub's "at least one approval and no changes requested" model.
  • Changes requested has no GitLab equivalent. This field is always reported as false.
  • Reviewer count only counts users who have approved, not all assigned reviewers.

These gaps are tracked internally and may be refined in future releases.

Troubleshooting

Diffs not appearing on GHE

Add API_BASE_URL to your GHE external auth config and restart Coder. Diffs should appear within a couple of minutes.

Users not seeing diffs

The chat owner must have linked their account through the relevant external auth provider.

Check logs

Look for gitsync warnings such as no provider for origin or resolve token errors.