Skip to Content
Platform
PlatformGitHub

GitHub

Connect a GitHub repository to use its files as a versioned recipe source.

Connecting GitHub makes selected repositories available to Introspection. A recipe can then point to a repository, ref, and optional sub-path. Introspection resolves that source to an exact commit so each Runtime version has reproducible behavior.

Repository changes also participate in the Runtime lifecycle. Pull-request commits can produce candidate Runtime versions, while commits on the default branch can produce production Runtime versions. The Runtime and environment configuration determines which version receives traffic.

Typical workflow

  1. Connect GitHub and grant Introspection access to the recipe repository.
  2. Register a recipe from a ref or directory in that repository.
  3. Develop a change on a branch and open a pull request.
  4. Verify the candidate Runtime version created from the pull-request commit.
  5. Merge the change so the default-branch commit becomes available as a production Runtime version.

See Agent development lifecycle for the full local, development, staging, and production sequence.

Connect a repository

An organization admin or owner connects GitHub from the organization integrations page:

  1. Select Connect on the GitHub integration.
  2. Install the Introspection GitHub App on the GitHub account or organization that owns the repository.
  3. Select the repositories Introspection may access.
Organization integrations page with a GitHub connection card and Connect action
Organization owners connect the GitHub App once from the Integrations page.

The connection belongs to the Introspection organization, with one active GitHub connection per organization. It uses the GitHub App installation rather than a personal OAuth token, and Introspection stores its credential encrypted.

Installing the App decides what Introspection can reach; it does not by itself make any repository usable. A project registers the ones it works with, from Project settings → Repositories or with introspection repositories add. Creating a recipe from a GitHub selector — which introspection runtimes create and the dashboard’s new-runtime flow both do — registers the repository it pins automatically, so most projects only register the additional repositories their agents work on. Work with repositories covers the full path from installation to a cloned checkout.

Access and permissions

Reading recipe source

When a task needs recipe source, the platform mints a short-lived installation token from the GitHub App and uses it to clone the repository into the run’s sandbox. The token is down-scoped to contents:read for the one repository the runtime’s pinned recipe resolves to. It is minted per use, never long-stored, and is not general GitHub API or repository write access.

Publishing changes

An agent task can prepare repository changes in its sandbox. Pushing a branch or opening a pull request is granted through the same GitHub App installation, by declaring workspace repositories in the runtime manifest’s runtime.github block. repositories names which registered repositories the runtime’s tasks may check out, and permissions raises the ceiling on what its minted token may do — mirroring the GitHub Actions permissions: block over a closed allow-list (contents, pull_requests, issues, checks, statuses, deployments, discussions). Reads are implicit, so an author only declares write elevations, such as contents: write and pull_requests: write for a branch-and-PR workflow.

The manifest is the grant only — nothing is cloned because a recipe named it. A task requests the subset it actually wants via repositories on POST /v1/tasks (--repository on the CLI), and an entry outside the grant is dropped. Because the grant rides the runtime version, editing runtime.github in the manifest takes effect only once a new runtime version is deployed from that commit — with the exception of a direct PATCH /v1/runtimes/{id}, which rewrites the live row and applies from the next token mint (it replaces config_json wholesale; see Runtimes).

The token minted to clone recipe source is separate and stays read-only. A runtime that declares no runtime.github block gets no repository write capability.

Work with repositories covers the full path: registering a repository to the project, declaring the grant and its permission ceiling, requesting the clone from a task, and shipping the agent’s change through review.

How repository changes stay in sync

GitHub sends verified lifecycle events directly to the Introspection control plane. The platform uses them to keep connected resources in sync:

  • Installation events update or remove the organization’s GitHub connection when the App is suspended, restored, or uninstalled.
  • Pull request events create and update preview runtime versions, release staging from a closed preview when appropriate, and update Introspection issues linked to that pull request.
  • Pushes to the repository’s default branch create production runtime versions for registered recipes.

Because lifecycle events flow back from GitHub, the connection stays in sync whether you manage it from Introspection or from GitHub. Disconnecting in the app also uninstalls the App on GitHub.

Renaming a repository on GitHub is not synced. A registration stores the owner/name it was created with, and nothing updates it — repository rename and transfer events are not handled. After a rename, pushes no longer match the registration and stop creating production runtime versions, with no error raised. Register the new name and re-point the grant. A repository a recipe is pinned in cannot be re-pointed — the pin is immutable and unregistering is refused while a recipe holds it — so that case needs a new recipe, and a new runtime, against the new registration.

Disconnect or reconnect

Removing the connection in Introspection uninstalls the GitHub App and revokes Introspection’s repository access. If GitHub reports that an installation has expired or been revoked, the integration is marked for an admin to reconnect.

  • Recipes: how a repository and commit become your agent’s pinned behavior.
  • Tasks: the executions that prepare changes; publishing them requires the separately configured write capability described above.
  • Platform: the unified map for source control, tools, models, and protected execution.
Last updated on