GitHub
Code hosting platform for repositories, issues, pull requests, commits, branches, and releases.
Supports repository work across branches, issues, comments, gists, collaborators, cards, and repository events.
Use GitHub with Snow
Snow is a personal AI assistant that builds real apps for you, and they can put GitHub to work.
What Snow can do with GitHub
These are the GitHub operations Snow and the apps you build with it can run. Sign in to choose which ones Snow may run without asking.
Reads187
Look at your data without changing it.
- Check if pull request merged
Checks if a pull request has been merged by querying the GitHub API. Use this action when you need to verify whether a specific pull request has been successfully merged into its target branch. The API returns a 204 status for merged PRs and 404 for unmerged PRs.
- Compare two commits
Compares two commit points (commits, branches, tags, or SHAs) within a repository or across forks, using `BASE...HEAD` or `OWNER:REF...OWNER:REF` format for the `basehead` parameter.
- Find Pull Requests
Primary tool to find and search pull requests. Supports filtering by repository, author, state, labels, and merge status, and returns structured PR data for reliable use in workflows. GitHub search results are capped at ~1000 total items; narrow filters when totals approach this limit. `created_since`/`updated_since` filter on creation/update timestamps, not `merged_at`; apply merge-date filtering client-side.
- Find Repositories
AI-optimized repository search with smart filtering by language, stars, topics, and ownership. Builds intelligent search queries and returns clean, actionable repository data. Check `incomplete_results` in the response — when true, results are non-exhaustive. Search endpoints are rate-limited to ~30 requests/minute (vs. 5000/hour for general REST); apply backoff on 403/429. Total results are capped at ~1000 per query regardless of pagination.
- Get a check run
Retrieves detailed information for a specific check run within a GitHub repository.
- Get a pull request
Retrieves a specific pull request from a GitHub repository using its owner, repository name, and pull request number.
- Get a reference
Retrieves a specific Git reference (e.g., a branch, tag, or fully qualified like 'heads/main') from a GitHub repository. The reference must exist in the repository; use 'list_matching_references' first if unsure what references are available.
- Get issue comments
Retrieves all comments for a specific GitHub issue in chronological order. Use this action when you need to view discussion history, analyze comment threads, or fetch comment details for a specific issue. Comments can be filtered by update time and paginated for large discussions.
- Get organization teams
Retrieves a list of teams for a specified GitHub organization. Use this action when you need to list all teams, find team information, or explore team structure within an organization. Requires read:org scope and returns paginated results.
- Get Pull Requests
Retrieves a list of pull requests from a repository with flexible filtering options. Use this action when you need to list all pull requests in a repository, optionally filtered by state (open, closed, all), base branch, head branch, or sort order. Returns an array of pull request objects with comprehensive details including title, state, author, labels, timestamps, and branch information.
Creates37
Add something new to your account.
- Add email for auth user
Adds one or more email addresses (which will be initially unverified) to the authenticated user's GitHub account; use this to associate new emails, noting an email verified for another account will error, while an existing email for the current user is accepted.
- Create a blob
Creates a Git blob in a repository, requiring content and encoding ('utf-8' or 'base64'). Requires write access to the repository.
- Create a branch
Creates a new branch in a GitHub repository pointing to a specified commit. Use this action when you need to create a new branch from an existing commit SHA. IMPORTANT: This action only creates NEW branches. If the branch already exists, it will fail with a 422 'Reference already exists' error. The repository must not be empty (must have at least one commit) before creating a branch.
- Create a commit
Creates a new commit in a GitHub repository; the `tree` SHA and any `parents` SHAs must already exist in the repository.
- Create a pull request
Creates a pull request in a GitHub repository, requiring existing `base` and `head` branches; `title` or `issue` must be provided.
- Create a reference
Creates a NEW Git reference (branch or tag) in a repository. IMPORTANT: This action ONLY creates NEW references - if the reference already exists, it will fail with a 422 'Reference already exists' error. To update an existing reference, use the 'Update a reference' (GITHUB_UPDATE_A_REFERENCE) action instead. The repository must not be empty prior to this operation.
- Create a release
Creates a release in a GitHub repository for a specified tag; the tag must be unique for published releases, and if a `discussion_category_name` is given, it must already exist.
- Create a tree
Creates a new Git tree object in a repository, defining file/directory structure by specifying tree entries, optionally building on a `base_tree` SHA; all provided SHAs must be valid.
- Create an issue
Creates a new issue in a GitHub repository, requiring the repository to exist and have issues enabled; specific fields like assignees, milestone, or labels may require push access.
- Create an issue comment
Creates a new comment on an existing GitHub issue or pull request within the specified repository.
Updates66
Change something that is already there.
- Add a repository collaborator
Adds a GitHub user as a repository collaborator, or updates their permission if already a collaborator; `permission` applies to organization-owned repositories (personal ones default to 'push' and ignore this field), and an invitation may be created or permissions updated directly.
- Add assignees to an issue
Adds assignees to a GitHub issue. This action only adds users - it does not remove existing assignees. Changes are silently ignored if the authenticated user lacks push access to the repository.
- Add labels to an issue
Adds labels (provided in the request body) to a repository issue; labels that do not already exist are created.
- Add or update team membership for a user
Adds a GitHub user to a team or updates their role (member or maintainer), inviting them to the organization if not already a member; idempotent, returning current details if no change is made.
- Approve a workflow run for a fork pull request
Approves a workflow run from a forked repository's pull request; call this when such a run requires manual approval due to workflow configuration.
- Close a pull request
Closes an open pull request without merging it. The pull request state is set to "closed" and it can be reopened later if needed. Use this action when you want to reject or abandon a pull request without merging the proposed changes into the base branch. You must have write access to the repository to close pull requests.
- Close an issue
Close a GitHub issue by setting its state to closed. Use this action when you need to mark an issue as resolved or no longer relevant. Optionally specify a reason for closing (completed or not_planned) to provide context.
- Create or update file contents
Creates a new file or updates an existing file in a GitHub repository; SHA can be provided to validate file updates, automatically fetched if not provided.
- Mark pull request ready for review
Marks a draft pull request as ready for review using GitHub GraphQL API, transitioning it from draft to reviewable state. Use this action when a draft pull request has reached a stage where it is ready for team review and can potentially be merged. This action cannot be used on pull requests that are already marked as ready for review.
- Reopen an issue
Reopens a closed GitHub issue by changing its state to 'open' with state_reason 'reopened'. Use this action when you need to reopen a previously closed issue that requires further attention or work. Only users with push access to the repository can reopen issues.
Deletes33
Remove something. This often cannot be undone.
- Commit Multiple Files
Tool to atomically create, update, or delete multiple files in a GitHub repository as a single commit. Uses Git Data APIs to avoid SHA mismatch conflicts that occur with the Contents API when multiple files are modified in parallel. Use when you need to make multi-file changes reliably. BRANCH CREATION: When committing to a new branch (e.g., 'fix/my-fix' or 'feature/new-feature'), you MUST provide 'base_branch' (typically 'main' or 'master') to create the branch from. If the branch already exists, base_branch is not needed. This action handles race conditions automatically: if the branch is updated by another commit between fetching the HEAD and updating the reference (resulting in a 422 'not a fast forward' error), the action will retry by refetching the HEAD and rebasing changes. Use max_retries to control this behavior.
- Delete a repository
Permanently deletes the specified repository; this is a destructive, irreversible action that requires admin privileges for the repository.
- Abort Repository Migration
Tool to abort a repository migration that is queued or in progress. Use when you need to cancel an ongoing migration operation.
- Cancel a workflow run
Cancels a workflow run in a GitHub repository if it is in a cancellable state (e.g., 'in_progress' or 'queued'). Returns 202 Accepted on success.
- Cancel sponsorship
Tool to cancel an active GitHub sponsorship using GraphQL. Use when you need to terminate a sponsorship relationship between a sponsor and a sponsorable entity. Either sponsor ID/login and sponsorable ID/login must be provided.
- Clear Project V2 Item Field Value
Tool to clear the value of a field for an item in a GitHub Project V2. Use when you need to remove or reset a field value (text, number, date, assignees, labels, single-select, iteration, or milestone fields).
- Delete a commit comment
Deletes a specific commit comment, identified by its `comment_id`, from the specified repository; the comment must exist.
- Delete a deployment
Permanently deletes a specified *inactive* deployment from a repository.
- Delete a gist
Permanently deletes an existing GitHub gist, specified by its `gist_id`; this action is destructive and cannot be undone.
- Delete a label
Permanently removes an existing label from a repository.
Triggers
These are the trigger events currently available for GitHub.
- Branch Changed
Triggers when a GitHub branch changes. Monitors a specific branch for: - New commits pushed (head commit SHA changes) - Protection status toggled (branch becomes protected or unprotected) - Protection settings changed, including: required status checks and their enforcement level, admin enforcement, required pull request reviews (dismiss stale reviews, code owner reviews, approving review count, last push approval), required linear history, force push allowance, deletion allowance, conversation resolution, branch locking, and fork syncing.
- Check Run Status / Conclusion Changed
Triggers when a specific GitHub check run changes its status or conclusion. Monitors a single check run for changes to: status (queued, in_progress, completed, etc.), conclusion (success, failure, neutral, cancelled, skipped, timed_out, action_required), started_at, and completed_at.
- Check Suite Status / Conclusion Changed
Triggers when a GitHub check suite changes its status or conclusion for a given ref. Monitors all check suites associated with a git reference (branch, tag, or commit SHA) for changes to status (queued, in_progress, completed, etc.) and conclusion (success, failure, neutral, cancelled, skipped, timed_out, action_required, startup_failure, stale). Optionally filters by GitHub App ID.
- Commit Event
Triggered when a new commit is pushed to a repository.
- Follower Changes
Triggers when new followers are detected on your GitHub account.
- GitHub Deployment State Changed
Triggers when a specific GitHub deployment's fields change. Monitors the following aspects of a single deployment: - ``environment`` -- the target environment name - ``original_environment`` -- the original environment name before normalization - ``description`` -- the human-readable deployment description - ``task`` -- the deployment task name - ``sha`` -- the commit SHA being deployed - ``ref`` -- the branch, tag, or SHA reference being deployed - ``updated_at`` -- the last-updated timestamp - ``transient_environment`` -- whether the environment is temporary - ``production_environment`` -- whether this is a production deployment When any of these fields change, an event is emitted containing the full current deployment details and a list of which fields changed.
- GitHub Issue Comment Changed
Triggers when a specific GitHub issue comment changes. Monitors the following fields for changes: - ``body`` -- the text content of the comment (detects edits) - ``updated_at`` -- the last-updated timestamp - ``reactions_*`` -- all individual reaction counts (thumbs up/down, laugh, confused, heart, hooray, eyes, rocket) and the total count When a change is detected, the payload includes the full current comment data plus a ``changed_fields`` list indicating exactly which fields were modified.
- GitHub Issue Labels Changed
Triggers when the labels on a specific GitHub issue change. Fires whenever a label is added to, removed from, or has its metadata (color, description) modified on the monitored issue. The payload includes: - ``current_labels`` -- the full set of labels currently on the issue - ``added_labels`` -- labels that were newly added - ``removed_label_names`` -- names of labels that were removed - ``changed_label_names`` -- labels whose metadata changed without being added or removed
- GitHub Pull Request Reviewers Changed
Triggers when the list of requested reviewers (users or teams) for a pull request changes — for example when a reviewer is added, removed, or re-requested. The payload includes the full current reviewer list (users and teams with details), which reviewers were added, which were removed, and the previous reviewer list for reference.
- GitHub Release State Changed
Triggers when a specific GitHub release (identified by tag name) changes. Monitors the release title, body/notes, draft flag, prerelease flag, published timestamp, target branch/commit, and the set of attached assets. The payload includes the full current release details, a list of which fields changed, and the previous values for comparison.
Related integrations
Ready to put GitHub to work?
Sign up free, build an app by chatting, and connect GitHub in minutes. No credit card required.