Mint a short-lived GitHub installation token for a repo
Called by the host daemon to obtain a short-lived GitHub App installation token for a specific repository. The token is minted from the org's GitHub App installation and expires in ~1 hour. The `orgId` in the body must match the authenticated org. Auth: `Bearer rsk_*` via `getCliOrSessionAuth` OR worker runtime JWT. API keys gate on their project fence; a runtime JWT gates on the fence of the credential that minted it (null = org-wide on both paths). A repository bound only as context inside that fence returns HTTP 403 with `{ token: null, reason: 'context-repository' }`; callers must not fall back to a PAT for that policy refusal. The refusal gates writes only: readOnly:true still mints a read-scoped token; read-only context delivery stays a separate path. Returns `{ token: null, reason }` (HTTP 200) on soft failures so the caller can decide whether to fall back to a stored PAT.
AuthorizationBearer <rsk_live_*>Rensei API key presented as Authorization: Bearer rsk_live_. Required API-key scopes are recorded per operation in x-rensei-required-scopes.
application/json- body
orgId*stringMust match the authenticated org.
repo?stringCanonical owner/name form. Wins over owner + name when both present.
owner?stringname?stringreadOnly?booleanMint a read-only single-repository token. Omit or set false for the existing write token.
falseToken result.
application/json- response
token*stringexpiresAt*stringGitHub's authoritative expires_at for the minted token, surfaced verbatim (not a locally computed now+1h). Schedule any re-mint strictly before this instant.
date-timereadOnly*booleantrue only when this token was minted read-only (contents:read, one repository)
curl -X POST 'https://app.rensei.ai/api/daemon/git-token' \ -H 'Content-Type: application/json' \ -d '{ "orgId": "string"}'{ "token": "string", "expiresAt": "2019-08-24T14:15:22Z", "readOnly": true}Resolve credential env map for a session
Runtime-worker-JWT-only secret-release endpoint used at session spawn. Requires `worker:session`. Before any credential read, the platform resolves the canonical scope from the active worker row and claimed session: JWT worker (`sub`), org, and project claims must exactly match the active worker; the session must be owned by that worker in the same organization, and session project metadata must match when present. Body `orgId` must match that canonical scope and optional `projectId` is an exact assertion, never an override. Missing or mismatched ownership is collapsed to 404. Returns the blocklist-filtered agent environment and refresh horizon. The optional synthetic `poolId` is cost-attribution metadata and is not emitted into the agent environment. Audit is appended asynchronously without secret values.
Post merge-queue landing verdict
Called by a daemon worker with `LANDING_CAPABILITY` after attempting to land a commit onto the merge queue (automerge / fast-forward). Records the outcome and triggers post-landing cleanup (lock release, next-work promotion, Linear notification). Auth: runtime JWT. Cross-tenant guard: `orgId` in body must match the JWT's org claim (mismatch returns 404, not 403).