Skip to content

GitHub

Once connected, Speedwave can work with a repository the way a developer would: browse its contents, follow a pull request through commits and CI runs, and post review feedback.

GitHub runs as its own worker, a container with access to GitHub tokens only. Speedwave writes your token to the project’s token directory and mounts it read-only into the worker at /tokens/token, so the container can reach GitHub.com and nothing else. See Credentials for how that mount and file permissions work across every integration.

You connect through the GitHub OAuth device flow: Speedwave shows a code, you approve it at https://github.com/login/device, and the token lands on disk without ever passing through the project’s web UI. The Speedwave OAuth App requests the repo and read:user scopes: read/write on private and public repos, issues, pull requests, releases, and Actions, plus reading your account for the connection test.

A manual token is the fallback when the device flow doesn’t fit, for example a headless setup. Paste a token starting with gho_ (an OAuth App user token), github_pat_ (fine-grained PAT), or ghp_ (classic PAT); the worker reads whichever one you give it without checking the prefix, so make sure it covers the same scopes as above.

From there, the worker exposes 45 tools grouped by area: repositories, pull requests, pull request review, branches, commits, repository content, Actions, issues, labels, and releases. A few worth knowing: createPrComment posts a general comment on the conversation, while createPrReviewComment posts an inline comment anchored to a diff line, since these are separate GitHub endpoints; createPrReview and listPrReviews work at the review level, which matters for code review. getRunLogs and downloadArtifact return a short-lived download URL pointing at a ZIP rather than fetching and unpacking it for you, so download promptly. createRelease creates the tag for you if it doesn’t already exist, so there’s no need to call createTag first.

The worker only reaches GitHub.com through https://api.github.com; GitHub Enterprise Server is not supported. There is also no blame tool, since GitHub’s REST API has no line-level blame endpoint.

ToolWhat it does
listReposLists or searches repositories the account can see.
getRepoReads details of one repository.
searchCodeSearches code across GitHub, optionally scoped to a repo.
listPullRequestsLists pull requests with state, branch, or base filters.
getPullRequestReads details of one pull request.
createPullRequestOpens a new pull request, draft or ready.
updatePullRequestChanges a pull request’s title, body, base, or state.
mergePullRequestMerges a pull request. Destructive.
getPrDiffReturns a pull request’s unified diff as text.
getPrFilesLists a pull request’s changed files with per-file stats.
listPrCommitsLists the commits included in a pull request.
listPrReviewsLists reviews submitted on a pull request.
createPrReviewSubmits a review: approve, request changes, or comment, with optional inline comments.
listPrCommentsLists general (non-review) comments on a pull request.
createPrCommentAdds a general comment to a pull request.
createPrReviewCommentAdds a review comment anchored to a diff line.
listBranchesLists a repository’s branches.
getBranchReads details of one branch.
createBranchCreates a branch from a commit or another branch.
deleteBranchDeletes a branch. Destructive.
compareBranchesDiffs two branches or commits.
listCommitsLists commits with filters for branch, path, author, and date range.
listBranchCommitsLists commits on a specific branch.
searchCommitsSearches commit messages across GitHub.
getCommitDiffReturns one commit’s unified diff as text.
getTreeLists a repository’s file or directory tree.
getFileContentsReads a file’s contents; errors if the path is a directory.
createOrUpdateFileWrites a file with a commit, fetching the current blob SHA if you don’t supply one.
listWorkflowRunsLists Actions workflow runs, filterable by branch or status.
getWorkflowRunReads details of one workflow run.
getRunLogsReturns a short-lived ZIP download URL for a run’s logs.
rerunWorkflowReruns an existing workflow run.
triggerWorkflowFires a manual workflow_dispatch run.
listWorkflowRunArtifactsLists artifacts produced by a workflow run.
downloadArtifactReturns a short-lived ZIP download URL for an artifact.
listIssuesLists issues, excluding pull requests, with state and label filters.
getIssueReads details of one issue.
createIssueOpens a new issue.
updateIssueChanges an issue’s title, body, state, labels, or assignees.
closeIssueCloses an issue.
listLabelsLists labels defined in a repository.
createLabelCreates a new label.
createTagCreates a Git tag, lightweight or annotated.
deleteTagDeletes a Git tag. Destructive.
createReleaseCreates a release, creating its tag first if needed.
  1. Open the project’s integrations and select GitHub.

  2. Click Sign in with GitHub and approve the device code Speedwave shows you at https://github.com/login/device.

  3. Speedwave writes the resulting token to the project’s token directory once you approve, and GitHub appears ready to use in the project.

When a GitHub call fails, the worker maps the response to plain guidance:

StatusMeaning
401Token no longer valid. Connect GitHub again to get a new one.
403, rate limitedRate limit exhausted. The worker already retries up to twice on its own; wait and try again after that.
403, permissionToken can’t do this. Reconnect via OAuth to re-grant scopes, or check the manual PAT’s permissions.
404Item not found.
422Validation failed; the message names what was wrong.
5xxGitHub had a server error.
Network errorWorker couldn’t reach api.github.com; check your connection.

The GitHub worker can read GitHub tokens only. It has no access to any other service’s credentials, and the hub that routes tool calls to it holds no tokens of its own, so a compromised worker’s reach stops at GitHub. That boundary holds even when Speedwave is posting automated code review comments: the worker can act on a pull request but still cannot see credentials for any other integration.