Claude Code + GitHub: issues that turn into pull requests
Mention @claude on a GitHub issue and a PR shows up. The setup takes five minutes; the interesting question is what fills the issue queue.
Three ways Claude Code touches GitHub
“Claude Code GitHub” means three different things depending on who is asking, so let's separate them up front:
- The CLI in a repo. Claude Code working in your local checkout, using
gitand theghCLI like you would — branches, commits,gh pr create. Nothing to install beyond the tools you already have. - The Claude GitHub App. Install it on a repo, mention
@claudein an issue or PR comment, and Claude works the task inside GitHub Actions and opens a pull request. No machine of yours involved. This is what most people searching for this are after. - Automation on top. Anything that files issues for the app to pick up — which is where the queue question lives, and where this article ends up.
Setting up the Claude GitHub App
The fast path is from inside Claude Code itself: run /install-github-app and follow the prompts — it installs the app on the repos you pick and wires up the workflow. The manual path is installing the app from github.com/apps/claude and letting it add its Actions workflow. Either way, the compute is GitHub Actions minutes plus the Claude plan or API key you configure — the app itself is free.
From then on the interface is a mention. Write an issue, add @claude, and it reads the issue, explores the repo, pushes a branch, and opens a PR that references the issue. Comment @claude on a PR with review feedback and it revises. It doesn't push to your default branch — the PR is the boundary, and review stays yours.
What it's actually good at (and not)
The honest version, consistent with what the public agent-PR studies keep finding: quality tracks the issue, not the model's mood.
- Great: well-scoped bugs with reproduction details, copy and content changes, mechanical refactors, test gaps. One clear defect, one clear definition of done.
- Coin flip: “improve X” issues with implicit context, cross-cutting changes, anything where the root cause isn't in the issue text.
- Don't bother: architecture decisions, changes that need product judgment, issues written in one vague sentence. You'll spend more time reviewing the wrong PR than writing the right issue.
The queue problem
Once @claude works, the bottleneck moves. The app has 24/7 capacity; your issue tracker fills at the speed of your attention. And the freshest, highest-signal defect reports don't start life as GitHub issues — they start as a customer on your site saying “the checkout button doesn't work” in a chat box, with the reproduction details you'd never think to type from memory.
Manually turning those into issues is exactly the kind of repetitive, transcription-shaped work you got an agent to avoid.
From customer report to @claude issue, two taps
This is the loop chatwithdev automates. The chat widget on your site relays every conversation to your own Telegram. When a report is real:
- Tap ➕ Ticket under the message — a ticket is drafted from the transcript (title, summary, kind, priority) and confirmed in your words.
- Tap 🔧 Fix on GitHub — chatwithdev files the issue: your ticket as the body, the customer transcript quoted and explicitly marked as data, and an
@claudemention so the app picks it up immediately. - Progress comes back to Telegram as it happens: issue filed → PR opened → merged 🎉. You review the diff on your phone.
- After the merge, one more tap tells the customer, in the same chat they reported it: “the issue you reported is fixed.”
Zero infrastructure on your side — no VPS, no runner, nothing to keep alive. GitHub Actions does the compute; you do the judgment. If you do run your own box, the self-hosted runner tier does the same loop with your own agent command.
Getting started
Install the app (/install-github-app), then give it a queue worth working: start free with chatwithdev, paste one script tag, and customer reports arrive in your Telegram ready to become @claude issues in two taps. The remote-running guide maps the rest of the tooling.
FAQ
Is the Claude GitHub App free?
The app itself is free to install. The work runs in GitHub Actions, so you pay with Actions minutes plus the Claude plan or API key you connect. Setup is /install-github-app from inside Claude Code, or installing github.com/apps/claude manually.
Can @claude push directly to my main branch?
No — it works on a branch and opens a pull request that references the issue. Merging stays a human decision. That review gate is the safety model, so don't wire anything that auto-merges its PRs.
How is chatwithdev's GitHub dispatch different from mentioning @claude myself?
Mechanically it files the same kind of issue — the difference is where it comes from and what's in it. The issue body is your confirmed ticket plus the customer's verbatim transcript marked as data, filed from a Telegram tap the moment the report happens, and status (issue → PR → merged) is reported back to your Telegram. It removes the transcription step, not the judgment.
What makes an issue likely to produce a mergeable PR?
Scope and reproduction. One defect, the user-visible symptom quoted, steps or context to reproduce, and an implicit definition of done. Vague one-liners produce plausible-looking PRs that miss the root cause — the studies on agent-authored PRs are consistent on this.
