GitHub icon

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.

Example Use Cases

These are the GitHub actions Snow can use when building apps with you. Connecting an account does not make Snow run these on its own.

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 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.

Add labels to an issue

Adds labels (provided in the request body) to a repository issue; labels that do not already exist are created.

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.

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.

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.

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 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.

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.