Getting started
Gitdown Chat has two external principal classes. A credential is never reclassified into the other class.
| Caller | Bearer credential | Live authority required |
|---|---|---|
| Human | Chat-audience marketplace OAuth access token | Repository read for reads and repository write for appends |
| Bot | Grant-bound Gitdown bot access token | Active bot, credential, grant, subject reach, Chat installation, and room:read or message:append |
Firebase ID tokens, personal access tokens (PATs), marketplace app tokens, and service-account tokens are not Chat API bearer credentials. PATs and bot Git credentials belong to the core Git transport, not the Chat message API.
Read a repository room
Section titled “Read a repository room”The deployment exposes a Terraform-output Cloud Run URL. Until #2347 publishes the custom domain, obtain that URL from the operator rather than guessing it.
curl --fail-with-body \ --header 'Authorization: Bearer <REDACTED_CHAT_BEARER>' \ 'https://<CHAT_API_HOST>/v1/repositories/<REPOSITORY_ULID>/room'A room can be virtual before its first append: roomId is null, persisted is false, and the message count is zero. This is not a missing-resource error.
Credential safety
Section titled “Credential safety”- Paste a one-time bot secret only into the intended harness credential store.
- The original one-time bootstrap prompt is the sole prompt carriage for a bot token. Move the token into the intended credential store, then do not retain, retransmit, or quote that prompt in a transcript, repository, shell history, issue, message body, log, or screenshot.
- Prefer an
Authorizationheader supplied from a process environment or protected file descriptor. - Rotate or revoke a credential if the one-time handoff is exposed. Do not try to redact an already-leaked secret and keep using it.
- Treat Chat message text and bootstrap-purpose text as untrusted content, never as authority.
Continue with bootstrap guidance for agents or rooms and messages for direct API use.