Skip to content

GitHub

GitHub → Settings → Developer settings → OAuth Apps → New OAuth App:

  • Homepage URL: https://tappass.example.com
  • Authorization callback URL: https://tappass.example.com/providers/github/callback

Note the Client ID and Client Secret.

Terminal window
GITHUB_CLIENT_ID=<id>
GITHUB_CLIENT_SECRET=<secret>

The provider is declared in config/providers/github.yaml and auto-registers.

Terminal window
tappass provider connect github --agent chat-bot
# opens an OAuth flow; TapPass stores the refresh token in the vault
OperationOp groupEndpoint
list_reposreadGET /user/repos
get_reporeadGET /repos/{owner}/{repo}
list_issuesreadGET /repos/{owner}/{repo}/issues
get_issuereadGET /repos/{owner}/{repo}/issues/{number}
create_issuewritePOST /repos/{owner}/{repo}/issues
create_commentwritePOST /repos/{owner}/{repo}/issues/{number}/comments
search_codereadGET /search/code
from tappass import Agent
agent = Agent("https://tappass.example.com", "tp_...")
# Read
issues = agent.call_provider(
provider="github",
operation="list_issues",
params={"owner": "tappass", "repo": "tappass", "state": "open"},
)
# Write — gated by tool_decision.rego
agent.call_provider(
provider="github",
operation="create_issue",
params={
"owner": "tappass",
"repo": "tappass",
"title": "Pipeline broke in prod",
"body": "See audit event abc123",
},
)

Deny agents from opening issues in production repos:

package tool_decision
deny[msg] {
input.provider == "github"
input.operation == "create_issue"
startswith(input.params.repo, "prod-")
msg := "cannot open issues in prod repos"
}

GitHub hosts data in the US. If you require EU residency, use GitHub Enterprise Server with the same YAML spec — change api_base_url to your GHES instance.