TOOL · I/02 · DEV TRIBE

GitHub — where the engineering Cyborg opens, reviews, ships PRs.

Install the A'nil Cyborg GitHub App on your org in 90 seconds. Your engineering Cyborg gets a bot identity (@cyborg-eng[bot]) that opens PRs, reviews diffs with line-level comments, runs CI + security scans, manages labels + milestones, triages issues, and posts status checks. Never pushes directly to protected branches. All commits signed + verified. Full audit log streamed to your S3 / Datadog.

FREE with any Engineering Cyborg · INSTALL 90 seconds · PERMISSIONS 9 (least-privilege)
— 02 / WHAT IT DOES IN GITHUB

— CAPABILITIES

9 things the Cyborg does on GitHub — all behind branch protection.

Every action is bot-attributed (cyborg-eng[bot]), every commit is GPG-signed and verifiable, every push lands on a cyborg/* branch. Cyborg cannot push to main, cannot delete branches, cannot bypass required reviews. All by design, enforced by branch protection rules we ship by default.

Open pull requests

Cyborg branches from latest main, commits its work to cyborg/<ticket-id>, opens PR with autogenerated title + body + linked issue. Always ≤ 400 LOC where possible.

perm: contents:write · pull_requests:write

Review diffs · line-level comments

Reviews incoming human PRs against your style guide + security checklist + test coverage rules. Posts inline review comments + summary. Never auto-merges human PRs.

perm: pull_requests:write

Run + manage CI checks

Posts a cyborg-eng/review status check that gates merge. Triggers Actions workflows on its own PRs. Reads check run results. Cannot disable other checks.

perm: checks:write · actions:read

Triage + label issues

Auto-labels new issues (bug, feature, docs, p0/p1/p2), assigns to milestone, suggests owner from CODEOWNERS. Asks for missing info on incomplete reports.

perm: issues:write

Security + Dependabot triage

Reviews Dependabot alerts. For low-risk dep bumps, opens PR with changelog summary + risk note. For high-risk, files issue with mitigation plan + escalates in Slack.

perm: security_events:read · vulnerability_alerts:read

Repository read · codebase context

Reads code + docs + git history of repos it's installed on, for context. Embeds + indexes locally (encrypted, per-customer key). Re-indexed on push.

perm: contents:read · metadata:read

Comment on commits + discussions

Comments on direct commits to flag missing tests / convention drift. Joins Discussions to answer architectural questions with citations to your codebase.

perm: discussions:write · contents:read

Project board sync

Moves cards between columns (To-do → In-progress → In-review → Done) as PR state changes. Syncs with Linear / Jira if you use both.

perm: projects:write

Branch + tag operations (limited)

Creates + pushes to cyborg/* branches only. Cannot push to main, release/*, prod, or any branch matched by your protection rules. Cannot force-push. Cannot delete branches outside its own namespace.

perm: contents:write (namespace-scoped)
— 03 / SAMPLE

— REAL PR · ANONYMISED · TUESDAY 11:02 IST

A real PR review — opened by a human, reviewed by Cyborg.

Engineer Dharmesh opened PR #4218 to refactor a caching layer. Cyborg reviewed it in 47 seconds: 3 inline comments, 1 security flag, 1 test-coverage note, 1 approval after fix. This is what your engineers see in their reviews tab every day.

Open

Refactor caching layer to use Redis cluster mode #4218

acmecorp/api · base: main ← head: dharmesh/redis-cluster · opened 11:02 IST · by @dharmesh
FILES CHANGED14
ADDITIONS+312
DELETIONS−487
COMMITS3
REVIEWERS1 bot · 1 human
CI STATUS● 12 / 12 passing
cyborg-engbot reviewer reviewed in 47 seconds · 11:03 IST
Requested changes · 3 inline + 1 security + 1 test-coverage

Refactor LGTM in shape — Redis cluster mode is the right move and the abstraction is clean. 3 things to address before merge: a missing null-guard in CacheKeyBuilder.build() (potential NPE under cluster reroute), a security flag on RedisClusterClient instantiation (cert verification disabled in cluster.go:142), and test coverage dropped from 87% → 81% on the touched files. I can fix all 3 in a follow-up PR if helpful, just @-cyborg-eng fix-it and I'll branch off this one.

src/cache/CacheKeyBuilder.java L87 · +9 / −2
8585  public String build(String prefix, Object[] parts) {8686    var sb = new StringBuilder(prefix);87−   for (var p : parts) sb.append(':').append(p.toString());87+   for (var p : parts) sb.append(':').append(p);8888    return sb.toString();8989  }
CE
cyborg-engbot request changes

Removed the explicit p.toString()StringBuilder.append(Object) calls String.valueOf(), which renders null as the literal string "null". With cluster reroutes, parts can briefly contain null entries during a slot migration. Suggest:

for (var p : parts) {
  if (p == null) throw new IllegalArgumentException("null cache-key part");
  sb.append(':').append(p);
}

Or accept the "null" literal but document the contract. Either is fine — "silently emits 'null'" is the surprising option.

src/cache/cluster.go L142 · +1 / −0
140140  client := redis.NewClusterClient(&redis.ClusterOptions{141141    Addrs: cfg.Addrs,142+   TLSConfig: &tls.Config{InsecureSkipVerify: true},142143  })
CE
cyborg-engbot security · high

Disables TLS certificate verification on the Redis cluster client. This is a man-in-the-middle vulnerability — anything between this service and the Redis nodes (load balancer, sidecar, ingress) can present a forged cert and we won't notice. Recommend: load the cluster CA bundle and set RootCAs instead. If this is a temporary debug flag, please revert before merge and add a TODO with an issue link.

src/cache/CacheKeyBuilderTest.java L1 · coverage 87% → 81%
CE
cyborg-engbot test coverage

Coverage on touched files dropped from 87% → 81% (project floor: 80%, so still passing). Missing tests for the new cluster-reroute path: shouldRetryOnSlotMigration(), shouldNotRetryOnAuthError(), shouldFailoverToReplicaWhenPrimaryDown(). Happy to draft these — they're standard Redis cluster cases and your existing test scaffold supports them.

— STATUS CHECKS · 12 OF 12 PASSING

  • ci/build · passing · 2m 14s
  • ci/unit-tests · 1,247 / 1,247 passed · 1m 38s
  • ci/integration-tests · 86 / 86 passed · 4m 02s
  • ci/lint · 0 errors, 0 warnings · 18s
  • ci/coverage · 81% (floor 80%) · 12s
  • security/codeql · 0 new alerts · 3m 08s
  • security/dependabot · 0 new vulns · 11s
  • security/secret-scan · clean · 9s
  • vercel/preview-deploy · preview ready · 1m 22s
  • license/compliance · clean · 6s
  • perf/load-test · p95 unchanged · 5m 41s
  • cyborg-eng/review · changes requested (3 inline + 1 security + 1 coverage) · 47s

MERGE BLOCKED · cyborg-eng/review must approve + 1 human reviewer + branch up-to-date with main

ANONYMISED FROM A LIVE CUSTOMER REPO · CONFIG STRINGS + FILE NAMES SCRUBBED · ALL CYBORG REVIEW LANGUAGE VERBATIM

— 04 / PERMISSIONS · LEAST PRIVILEGE

— GITHUB APP · NOT OAUTH USER TOKEN

9 permissions — not 30. No admin:org. No repo:delete. Ever.

Installed as a GitHub App (org-level), not an OAuth user app. No human's personal token. Repo selection is per-installation: pick exactly which repos the Cyborg can see (default: explicit allowlist, not "all"). Org admin can revoke per-repo or org-wide in 1 click.

Permission What it allows Why we need it Risk Default
contents:read Read repository code, tags, branches Index your codebase for context-aware reviews + suggestions. Low ON
contents:write Push commits to non-protected branches only Push to cyborg/* branches to open PRs. Branch-protection rules block main, release/*, prod. Medium ON
pull_requests:write Open / comment / approve PRs Open PRs from cyborg/* branches; review human PRs with line-level comments + summary. Low ON
checks:write Post check runs (status checks) Post the cyborg-eng/review status check that gates merge. Low ON
actions:read Read workflow runs + logs (own repo) Inspect failing CI logs to suggest fixes. Cannot trigger arbitrary workflows. Low ON
issues:write Open / label / comment issues Triage incoming issues, file follow-ups for security alerts, link issues to PRs. Low ON
security_events:read Read CodeQL + secret-scan alerts Triage security alerts, draft mitigation PRs for low-risk dep bumps. Low ON
vulnerability_alerts:read Read Dependabot vulnerability alerts Auto-PR low-risk dep bumps; escalate high-risk to humans via Slack. Low ON
discussions:write Comment in repo Discussions Answer architectural / "how-do-I" questions with citations to your code. Low OPT-IN
NEVER REQUESTED: admin:org · admin:repo_hook · delete_repo · repo (classic full scope) · workflow:write · packages:write · members:write · user OAuth tokens (only GitHub App installation tokens, scoped + short-lived).
— 05 / BRANCH PROTECTION · OUR DEFAULTS

— SHIPPED AS PART OF INSTALL · YOU CAN OVERRIDE

Cyborg installs its own guardrails.

During install, Cyborg offers to apply these branch-protection rules to main + release/* in each selected repo. You can accept the bundle, customise per-repo, or skip and apply your own. Cyborg's own permissions are calibrated to be blocked by these rules. If you skip, Cyborg still cannot force-push or delete — those are GitHub-side hard caps for Apps.

1

Require PR before merge

No direct push to main — even from org admins. Cyborg's contents:write respects this.

DEFAULT · ON
2

Require ≥ 1 human review

Cyborg's review counts as a second opinion, not a first. A human must approve before merge.

DEFAULT · ON
3

Require status checks

ci/* + security/* + cyborg-eng/review must all pass before merge can fire.

DEFAULT · ON
4

Dismiss stale reviews on push

Any new commit invalidates prior approvals. No "approve at v1, sneak in v6" attacks.

DEFAULT · ON
5

Require signed commits

Cyborg signs all its commits with a per-customer GPG key. Humans should too — we'll prompt.

DEFAULT · ON
6

Require linear history

Squash- or rebase-merge only. No merge commits soup. Easier audit, easier revert.

DEFAULT · ON
7

Require branch up-to-date

Must rebase on latest main before merge fires. No skew between PR view and prod.

DEFAULT · ON
8

Block force-push + deletion

Hard-blocked at GitHub side — for everyone, including org admins, including Cyborg.

DEFAULT · ON
— 06 / INSTALL

— 90 SECONDS · ORG ADMIN APPROVAL REQUIRED

Install flow: 5 clicks, your repos picked explicitly.

  1. 01

    Click "Install GitHub App"

    From any Engineering Cyborg's hire flow or from this page. Opens GitHub App install screen.

  2. 02

    Pick org + select repos

    Default: "Only select repositories". Pick exactly which repos Cyborg may see. "All repositories" is allowed but not recommended.

  3. 03

    Review 9 permissions + approve

    GitHub shows the exact permission list. Org admin approves (most teams in 30 seconds). Single-click revoke anytime from org settings.

  4. 04

    Branch-protection bundle (optional)

    Cyborg offers to apply our 8-rule defaults to main + release/* in selected repos. Accept all, customise, or skip.

  5. 05

    First PR & audit stream

    Cyborg opens a "hello, this is what I'll do" PR (small, no-op style guide doc). You review, merge or close. From here on, every action streams to your Cyborg audit log + optional S3 / Datadog / Splunk webhook.

— 07 / ROLES THAT USE GITHUB

— 4 OF 12

Engineering, Design, PM and Data — all push code or read it.

Software Engineer is the heaviest user. Designer pushes design tokens + Storybook updates. PM links issues to deliveries. Data Analyst commits dbt models + dashboard configs. Each role has a separate bot identity.

— 08 / SECURITY MODEL

— BOTH SIDES OF THE WIRE

GitHub-side + Cyborg-side. Defense in depth.

GitHub-side (your org)

  • GitHub App, not OAuth user. No human's personal token leaks if a Cyborg credential rotates.
  • Per-repo allowlist. "Only select repositories" is the default. You pick exactly which repos.
  • Branch protection enforces our limits. Cyborg's permissions are designed to be blocked by standard protection rules.
  • Bot-attributed every action. cyborg-eng[bot] shows up on every commit, comment, PR, and check.
  • Single-click revoke. Org settings → Installed GitHub Apps → A'nil Cyborg → Uninstall. Removes all access in < 5 seconds.

Cyborg-side (our infra)

  • Installation tokens. 1-hour expiry, scoped to install, never persisted to disk — minted on-demand.
  • Per-customer GPG signing key. Generated in your tenancy at install, never leaves our HSM.
  • Code embeddings encrypted. AES-256, per-customer KMS key, no cross-tenant access. Embeddings only, not raw code.
  • Audit log every action. Every API call — logged with timestamp + repo + actor + payload digest.
  • Stream to your S3 / Datadog / Splunk via outbound webhook. SOC 2 Type II + ISO 27001 reports under NDA.
— PRICING

GitHub is free with any Engineering / Design / PM / Data Cyborg.

No per-PR charge. No per-repo charge. No "GitHub Enterprise tier" upsell — we support github.com Cloud, GitHub Enterprise Cloud, and GitHub Enterprise Server (self-hosted) at the same price. Even unlimited PR reviews on your busiest monorepo are included.

See Cyborg pricing
— 10 / FAQ

— ENGINEERING LEAD + SECURITY QUESTIONS

Sawaal jo VP Eng + Security poochte hain.

Can Cyborg push directly to main or force-push anywhere?

No, on both. (1) Cyborg only pushes to cyborg/* branches; the contents:write permission is respected by branch-protection rules, which block writes to main / release/* / prod. (2) GitHub Apps fundamentally cannot force-push or delete branches that have protection enabled — this is a GitHub-side guarantee, not a Cyborg promise. We've never had a force-push or branch deletion incident across 2,847 orgs.

Can Cyborg approve its own PRs to satisfy the "1 human review" rule?

No. GitHub's review-required rule, when set to "Require review from Code Owners" or "Require approval from someone other than the author", treats cyborg-eng[bot] as the author of its own PRs — so it can never self-approve. Cyborg can review human PRs (and post a non-blocking suggestion-only review), but the merge gate still requires a human approver. This is the design.

Does Cyborg train on our private code?

No, never. Your code is indexed (encrypted embeddings) for context retrieval at review time — that's a per-customer index, not a shared training set. We have a contractual no-train clause (your DPA + MSA both spell it out), and architecturally there is no pipeline from your tenant's embeddings to any model fine-tuning. Embeddings are deleted within 30 days of repo removal.

What about GitHub Enterprise Server (self-hosted)?

Fully supported. We install the GitHub App on your GHES instance the same way (org admin approves), and Cyborg connects via your GHES API URL. If your GHES is air-gapped, we offer a Cyborg satellite container that runs inside your network (talks only to your GHES + your cyborg-control-plane). Same pricing.

Can Cyborg modify GitHub Actions workflows?

No — workflow:write is in our NEVER-REQUEST list. Cyborg can read workflow runs (actions:read) to understand failures and suggest fixes, but it cannot create / modify / delete .github/workflows/*.yml. If a PR from Cyborg touches a workflow file, GitHub itself blocks the push and the PR gets rejected. Workflow changes are always human-authored.

What about secrets in the codebase — does Cyborg see them?

If a secret is committed in plaintext, yes — same as any human reviewer. That's a problem for both of us, and Cyborg flags it as a P0 security issue immediately. We integrate with GitHub Secret Scanning so leaked tokens get rotated automatically (where supported) and Cyborg never includes detected secret content in its embedding index. Best practice: use GitHub Encrypted Secrets / your secret manager — Cyborg never asks for, sees, or stores those.

If we cancel, what happens to Cyborg's commits and reviews?

Your repo history is yours — we never owned it. On uninstall: the GitHub App is removed in < 5 seconds, all installation tokens are revoked, our 30-day rolling embeddings index is purged within 7 days. Every commit Cyborg authored stays in your repo forever (signed, attributable, auditable). Optional: we provide a CSV export of every PR + review + comment Cyborg made for your records.

— OTHER INTEGRATIONS

GitHub is tool 2 of ~80.

Pair with Slack (where reviews land), Linear / Jira (where PRs link to tickets), Vercel / Netlify (preview deploys), and Datadog / Sentry (so the Cyborg sees prod errors when shipping).

Browse all integrations