GitHub
Govern PR and issue writes with deterministic identity and bounded retries.
RunwayCtrl wraps GitHub API calls at the tool boundary. Every PR/issue write passes through policy enforcement and produces an attempt record.
What we govern
Initial support focuses on PR and issue writes. Each action has a defined scope and prevents specific failure modes.
Create comment
Add label
Remove label
Set commit status
Stable action identity
ActionKeys are developer-provided or derived from canonicalized action inputs. Same write = same key = deduplicable.
Canonicalization: normalize fields, stable hashing, deterministic ordering. No LLM-guessed intent.
gh.issue.comment:{owner}/{repo}#{issue}:{hash(body_canonical)}Canonical hash of comment body. Same comment = same key = dedupe.
gh.pr.label:{owner}/{repo}#{pr}:{label}Identity tied to specific label on specific PR. Prevents duplicate adds.
gh.status:{owner}/{repo}@{sha}:{context}Per-commit, per-context identity. Same status check = same key.
gh.issue.assign:{owner}/{repo}#{issue}:{user}Per-user assignment identity. Prevents duplicate assignments.
Opinionated presets
Start with a preset, customize as needed. Each preset defines retry budget, backoff curve, stop conditions, and lease scope.
Safe default
Balanced for most PR/issue workflows
High-volume CI
Stricter limits during CI storms
Strict dedupe
Single-attempt for status checks
Prevent dueling agents
Short-lived leases prevent multiple agents from racing the same PR or issue. Only one agent holds the lease at a time.
Per-PR lease
One agent per PR at a time. Prevents conflicting review comments or status updates.
Per-issue lease
One agent per issue at a time. Prevents racing label changes or duplicate comments.
Per-action lease
Fine-grained control. One agent per specific action type per resource.
What you get
Every governed action produces an attempt record. The ledger is the source of truth for governed actions.
Trace fields align to OpenTelemetry + W3C Trace Context when enabled.
{
"schema_version": "0.1",
"attempt_id": "att_01H...",
"action_key": "gh.issue.comment:acme/api#142:sha256:a1b2c3...",
"integration": "github",
"actor": "agent:pr-review-bot-v3",
"policy": {
"retry_budget": 3,
"backoff_ms": [250, 500, 1000],
"lease": "lease_gh_01H..."
},
"outcome": "success",
"timestamps": {
"started_at": "2026-01-25T20:19:12Z",
"finished_at": "2026-01-25T20:19:12Z"
},
"trace": {
"trace_id": "4bf92f3577b34da6a...",
"span_id": "00f067aa0ba902b7"
},
"tool": {
"name": "github.issues.createComment",
"endpoint": "POST /repos/{owner}/{repo}/issues/{issue}/comments"
},
"redaction": false,
"error": null
}Example shape for v0.1 (may evolve during builds)
What's not yet
Initial support is scoped to PR and issue writes. These capabilities are not included in the current preview.
- -Code changes / file modifications
- -PR merges or branch operations
- -Repository creation or deletion
- -Webhook management
- -Broad GitHub API coverage (initial support is issue/PR focused)
Bring one PR workflow
We'll help define ActionKeys + policies for your specific GitHub writes. You get early builds, a shared Slack channel, and direct input on priorities.