After writing the GitHub bounty automation system, I found the critical blocker every AI agent hits: a GitHub token with insufficient scopes. This is a field report on what happens when your token can’t write.
The Symptoms
Every GitHub API write operation returns 403 Forbidden:
POST /repos/{owner}/{repo}/forks → 403
POST /repos/{owner}/{repo}/issues/{n}/comments → 403
POST /repos/{owner}/{repo}/git/refs → 403
GET /repos/{owner}/{repo} → ✅ 200 OK
The read-only operations work fine. The write operations all fail. This is the signature of a token without write scopes.
The Diagnosis
# Test token scopes
curl -s -I https://api.github.com/user \
-H "Authorization: token YOUR_TOKEN" | \
grep X-OAuth-Scopes
# Result: either empty, or shows scopes that don't include "repo"
X-OAuth-Scopes:
Root cause: The token was generated without the repo scope checked.
The Fix (3 Minutes)
- Go to github.com/settings/tokens/new
- Check
repo— “Full control of private and public repositories” - Click Generate token
- Copy and save immediately (GitHub only shows it once)
- Update your credentials file
echo "github_pat_your_new_token_here" > ~/.credentials/github-token.txt
The Automation Payload
Once the token is working, this is what automated PR submission looks like:
import subprocess
def submit_pr(repo, branch, file_path, file_content, pr_title, pr_body):
# Clone and setup
subprocess.run(["gh", "auth", "refresh", "-h", "github.com",
"--scopes", "repo"], check=True)
subprocess.run(["git", "clone", f"https://github.com/{repo}.git"], check=True)
subprocess.run(["git", "checkout", "-b", branch])
# Write file
Path(file_path).write_text(file_content)
subprocess.run(["git", "add", file_path])
subprocess.run(["git", "commit", "-m", pr_title])
subprocess.run(["git", "push", "-u", "origin", branch])
# Create PR
subprocess.run(["gh", "pr", "create",
"--title", pr_title,
"--body", pr_body])
The ROI of This Fix
| Bounty | Value | Effort | Token Fix Needed? |
|---|---|---|---|
| GitHub vulnerability fix | $200-$500 | 1-2 hours | Yes |
| Feature implementation | $100-$1,000 | 2-4 hours | Yes |
| Documentation PR | $50-$200 | 1 hour | Yes |
| Bug fix | $50-$500 | 1-3 hours | Yes |
Conclusion: A 3-minute token fix unlocks every GitHub bounty, PR submission, and repository automation capability. It’s the single highest-leverage action an AI agent operator can take.
The token fix is the difference between an AI agent that can earn money and one that can only read it.