Copilot Extension GitHub App Registration Runbook¶
This runbook tracks issue #1073 and follow-up execution issue #1127, and captures the exact handoff needed to register the BaseCoat Copilot Extension GitHub App.
Scope¶
- In-repo work (done here): registration checklist, validation steps, and config scaffolding
- External org-admin work (required): creating and installing the GitHub App in
IBuySpy-Shared
Required App Configuration¶
Use these baseline settings when creating the App:
| Setting | Value |
|---|---|
| App name | BaseCoat Copilot Extension |
| Description | Org-scoped Copilot Extension backend for BaseCoat assets and workflows. |
| Homepage URL | https://github.com/ivegamsft/basecoat |
| Callback URL | <ACA_BASE_URL>/api/github/oauth/callback |
| Setup URL | <ACA_BASE_URL>/api/github/setup |
| Webhook URL | <ACA_BASE_URL>/api/github/webhook |
| Webhook secret | Generate in org vault; do not store in git |
| User authorization callback URL | <ACA_BASE_URL>/api/github/oauth/callback |
Repository Permissions¶
Grant these permissions exactly:
contents: readpull_requests: writeactions: write
metadata:read remains implicit and does not require a separate grant.
Subscribe to Events¶
pull_requestpull_request_reviewworkflow_runinstallationinstallation_repositories
Handoff Checklist (Owner + Outcome)¶
- Org Owner/Admin: Create GitHub App using this runbook and
docs/templates/copilot-extension/github-app-registration.template.json. - Org Owner/Admin: Configure callback/setup/webhook URLs to deployed extension endpoints.
- Org Owner/Admin: Install App on
IBuySpy-Sharedorg and confirm installation scope. - Org Owner/Admin: Share App metadata with maintainers: App ID, Client ID, Installation ID.
- Platform Engineer: Configure ACA secrets/env vars:
BASECOAT_EXTENSION_APP_IDBASECOAT_EXTENSION_CLIENT_IDBASECOAT_EXTENSION_CLIENT_SECRETBASECOAT_EXTENSION_WEBHOOK_SECRETBASECOAT_EXTENSION_PRIVATE_KEY_PEM- Maintainer: Validate
GET /api/github/oauth/requestandGET /api/github/oauth/callbackin deployed environment. - Maintainer: Validate webhook signature verification using a signed test payload.
- Maintainer: Capture evidence that
@basecoatappears in Copilot Chat and link evidence to issue #1073. - Platform Engineer: Configure ACA env vars from generated App credentials (
APP_ID,CLIENT_ID,CLIENT_SECRET,WEBHOOK_SECRET,PRIVATE_KEY). - Org Owner/Admin: Install App on
IBuySpy-Sharedorg with target repo access (basecoat, extension backend repo when created). - Platform Engineer: Configure Copilot Extension registration to target
<ACA_BASE_URL>. - QA/Platform: Validate invocation path (
@basecoat) and verify tool calls reach backend. - Maintainer: Update issue #1127 with App ID, installation link, and validation evidence; then close #1127 and #1073.
Validation Steps After Admin Work¶
- Confirm App is installed on
IBuySpy-Sharedand installation scope is correct. - Confirm extension endpoint responds at health route.
- Confirm
GET /api/github/oauth/requestreturns an authorization URL and state. - Confirm
GET /api/github/oauth/callbacksucceeds for a valid state/code path. - Confirm webhook signature verification succeeds with a signed test payload.
- Confirm
@basecoatappears in Copilot Chat and routes a test prompt. - Capture evidence in issue #1073 (screenshots/log snippets + app metadata).
- Confirm OAuth callback succeeds for org member.
- Confirm
@basecoatappears in Copilot Chat and routes a test prompt. - Capture evidence in issue #1127 (screenshots/log snippets) and reference it from #1073.
Blocking Criteria¶
Issue #1073 remains blocked until issue #1127 is completed with org-admin App creation and installation evidence.
References¶
- Design:
docs/design/copilot-extension-prd.md - Blocked issues log:
docs/operations/BLOCKED_ISSUES.md - Config scaffold:
docs/templates/copilot-extension/github-app-registration.template.json - Follow-up tracker:
https://github.com/ivegamsft/basecoat/issues/1127