Skip to content

GitHub

GitHub

GitHub is the world’s largest code hosting platform, offering Git-based version control, issue tracking, pull request reviews, and continuous integration. With the GitHub integration in SquadOS, your agents can create and manage repositories, open issues, review and merge pull requests, publish releases, and search code — all programmatically, without leaving the platform.

This tool uses OAuth 2.0 (OAUTH2) to connect.

You will need the following fields:

FieldRequiredDescription
oauth_tokenYesOAuth 2.0 access token obtained by authorizing access to your GitHub account through the Composio connection page.
  1. Go to the Composio connection page (see “How to connect in SquadOS” below) and click Connect.
  2. You will be redirected to GitHub to authorize access. Log in if needed.
  3. Review the requested permissions and click Authorize.
  4. The OAuth token is generated and stored automatically by Composio — you do not need to copy it manually.
  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for GitHub.
  3. Click the card to open the details and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you authorize access via OAuth to GitHub.
  5. Once done, you’re sent back to SquadOS with the account connected and the tool available to agents. (Connection-flow details in Organization Tools.)

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

NameTypeRequiredDescription
ownerstringYesThe GitHub account owner of the repository (case-insensitive).
repostringYesThe name of the repository, without the .git extension (case-insensitive).
titlestringYesThe title for the new issue.
bodystringNoThe detailed textual contents of the new issue.
labelsarrayNoArray of label names to associate with this issue. Only users with push access can set labels; they are silently dropped otherwise.
assigneesarrayNoGitHub login names for users to assign to this issue. Only users with push access can set assignees.
milestonestringNoThe ID of the milestone to associate this issue with (e.g., "5"). Only users with push access can set the milestone.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_AN_ISSUE

Retrieves detailed information about a specific issue in a repository using the owner, repository name, and issue number.

NameTypeRequiredDescription
ownerstringYesUsername of the account owning the repository. Not case-sensitive.
repostringYesName of the repository (without .git extension). Not case-sensitive.
issue_numberintegerYesThe identifying number of the issue.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_LIST_REPOSITORY_ISSUES

Lists issues (including pull requests) from a GitHub repository. Requires BOTH owner AND repo parameters.

NameTypeRequiredDescription
ownerstringYesThe GitHub account owner (user or organization) of the repository. Not case-sensitive.
repostringYesThe name of the repository (without .git extension). Not case-sensitive.
statestringNoFilters issues by state: "open", "closed", or "all".
labelsstringNoA comma-separated list of label names to filter by (e.g., "bug,ui").
assigneestringNoFilter by assignee username. Use "none" for unassigned or "*" for any.
sortstringNoSort field: "created", "updated", or "comments".
sincestringNoOnly issues updated at or after this ISO 8601 timestamp.
per_pageintegerNoNumber of results per page (max 100).
pageintegerNoPage number for results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_CREATE_AN_ISSUE_COMMENT

Creates a new comment on an existing GitHub issue or pull request within the specified repository.

NameTypeRequiredDescription
ownerstringYesAccount owner of the repository (username or organization); not case-sensitive.
repostringYesName of the repository (without .git extension); not case-sensitive.
issue_numberintegerYesNumber identifying the issue or pull request for the comment.
bodystringYesComment content in GitHub Flavored Markdown.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_ADD_LABELS_TO_AN_ISSUE

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

NameTypeRequiredDescription
ownerstringYesUsername or organization name owning the repository (case-insensitive).
repostringYesRepository name, without the .git extension (case-insensitive).
issue_numberintegerYesPositive integer that uniquely identifies the issue within the repository. Must be >= 1.
labelsarrayYesArray of label names to add to the issue. Labels that don’t exist will be created automatically.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_CREATE_A_PULL_REQUEST

Creates a pull request in a GitHub repository, requiring existing base and head branches; title or issue must be provided.

NameTypeRequiredDescription
ownerstringYesThe account owner of the repository. Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
headstringYesThe name of the branch where your changes are implemented. This branch must already exist. For cross-repository PRs, use username:branch.
basestringYesThe name of the branch you want the changes pulled into. Must be an existing branch on the target repository.
titlestringNoThe title of the new pull request. Required unless issue is specified.
bodystringNoThe detailed description or contents of the pull request.
draftbooleanNoIf true, creates the pull request as a draft. Draft PRs cannot be merged until marked as ready for review.
issueintegerNoThe number of an existing issue to convert into a pull request. Required if title is not specified.
maintainer_can_modifybooleanNoIndicates whether maintainers of the upstream repository can modify the pull request.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_A_PULL_REQUEST

Retrieves a specific pull request from a GitHub repository using its owner, repository name, and pull request number.

NameTypeRequiredDescription
ownerstringYesThe username of the account that owns the repository. Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
pull_numberintegerYesThe number that identifies the specific pull request.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_MERGE_A_PULL_REQUEST

Merges an open and mergeable pull request in a repository. A 405 error can occur if the PR is still a draft, branch protection rules are not satisfied, or the base branch has been modified since the PR was last synced.

NameTypeRequiredDescription
ownerstringYesRepository owner’s username. Not case-sensitive.
repostringYesRepository name, without the .git extension. Not case-sensitive.
pull_numberintegerYesThe unique number identifying the pull request. The PR must be open, not a draft, and all branch protection rules must be satisfied.
merge_methodstringNoMerge strategy: "merge", "squash", or "rebase". Defaults to repository’s setting.
commit_titlestringNoTitle for the merge commit message.
commit_messagestringNoAdditional details for the merge commit message.
shastringNoSHA of the pull request’s head commit. Must match for merge to succeed.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_LIST_PULL_REQUESTS

Lists pull requests for a GitHub repository. The owner and repo parameters are REQUIRED.

NameTypeRequiredDescription
ownerstringYesThe GitHub username or organization name that owns the repository.
repostringYesThe name of the repository (without the .git extension).
statestringNoFilter by pull request state: "open", "closed", or "all".
headstringNoFilter by head user/org and branch name, e.g., user:ref-name.
basestringNoFilter by base branch name.
sortstringNoSort results by: "created", "updated", "popularity", or "long-running".
directionstringNoSort direction: "asc" or "desc".
per_pageintegerNoNumber of results per page (maximum 100).
pageintegerNoPage number for results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST

Creates a pull request review, allowing approval, change requests, or comments; body is required if event is REQUEST_CHANGES or COMMENT, and omitting event makes the review PENDING.

NameTypeRequiredDescription
ownerstringYesUsername of the account owning the repository (case-insensitive).
repostringYesRepository name, without the .git extension (case-insensitive).
pull_numberintegerYesIdentifying number of the pull request.
eventstringNoReview action type: "APPROVE", "REQUEST_CHANGES", or "COMMENT". If omitted, review is PENDING.
bodystringNoReview’s main body text; required if event is REQUEST_CHANGES or COMMENT.
commentsarrayNoInline draft review comments. Each object requires path (relative file path) and body (comment text), with optional line and side for diff location.
commit_idstringNoSHA of the commit to review; defaults to the latest pull request commit.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_A_REPOSITORY

Retrieves detailed information about an existing and accessible GitHub repository.

NameTypeRequiredDescription
ownerstringYesThe username of the account that owns the repository. Case-insensitive.
repostringYesThe name of the repository, without the .git extension. Case-insensitive.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

Create a repository for the authenticated user

Section titled “Create a repository for the authenticated user”

GITHUB_CREATE_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER

Creates a new repository for the authenticated user, optionally within an organization if team_id is specified.

NameTypeRequiredDescription
namestringYesThe name of the repository. Must be unique within your account. Can only contain alphanumeric characters, hyphens, underscores, and periods.
descriptionstringNoA short description of the repository.
privatebooleanNoWhether the repository is private (true) or public (false).
auto_initbooleanNoWhether to initialize the repository with a README.
license_templatestringNoSPDX license key identifier (lowercase), e.g., "mit", "apache-2.0".
gitignore_templatestringNoDesired .gitignore template, e.g., "Python", "Node".
has_issuesbooleanNoWhether issues are enabled.
has_wikibooleanNoWhether the wiki is enabled.
has_discussionsbooleanNoWhether discussions are enabled.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_CREATE_A_FORK

Creates a fork of an accessible repository, optionally into a specific organization, with a new name, or copying only the default branch.

NameTypeRequiredDescription
ownerstringYesThe username or organization name that owns the repository. Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
organizationstringNoThe GitHub organization name to fork the repository into. If not specified, the fork is created in the authenticated user’s account.
namestringNoThe desired name for the newly created fork. If not provided, uses the original repository name.
default_branch_onlybooleanNoIf True, only the default branch is copied.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_A_BRANCH

Retrieves detailed information for a specified branch within a GitHub repository.

NameTypeRequiredDescription
ownerstringYesThe account owner of the repository. Not case-sensitive.
repostringYesThe name of the repository without the .git extension. Not case-sensitive.
branchstringYesThe name of the branch. Cannot contain wildcard characters. If "HEAD" is provided, it resolves to the repository’s default branch.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_LIST_BRANCHES

Lists branches for an existing GitHub repository, with an option to filter by protection status.

NameTypeRequiredDescription
ownerstringYesAccount owner’s username (case-insensitive).
repostringYesRepository name, excluding .git extension (case-insensitive).
protectedbooleanNoFilter by protection status: true for protected, false for unprotected; omit for all branches.
per_pageintegerNoNumber of results per page (max 100).
pageintegerNoPage number for paginated results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_LIST_COMMITS

Lists commits for a GitHub repository. Optionally filter by SHA/branch, path, author, committer, or date range.

NameTypeRequiredDescription
ownerstringYesThe account owner of the repository (username or organization name).
repostringYesThe name of the repository without the .git extension.
shastringNoSHA hash or branch name to start listing commits from. Defaults to the repository’s default branch.
pathstringNoOnly commits modifying this specific file path will be returned.
authorstringNoFilter commits by the commit author’s GitHub login or email address.
committerstringNoFilter commits by the commit committer’s GitHub login or email address.
sincestringNoOnly commits created on or after this ISO 8601 timestamp.
untilstringNoOnly commits created before this ISO 8601 timestamp.
per_pageintegerNoNumber of results to return per page (max 100).
pageintegerNoPage number of the results to fetch.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_A_COMMIT

Retrieves a specific commit from a repository by its owner, name, and a valid commit reference (SHA, branch, or tag), supporting pagination for large diffs.

NameTypeRequiredDescription
ownerstringYesThe username or organization name that owns the repository. Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
refstringYesThe commit reference: a SHA, branch name (e.g., heads/main), or tag name (e.g., tags/v1.0).
pageintegerNoPage number for paginating the commit’s diff if it’s too large.
per_pageintegerNoNumber of results per page when paginating the commit’s diff (max 100).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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

NameTypeRequiredDescription
ownerstringYesThe account owner of the repository (not case-sensitive).
repostringYesThe name of the repository (not case-sensitive, without the .git extension).
pathstringYesThe full path to the file in the repository, including filename and extension. Do not include leading slashes.
messagestringYesThe commit message for this file creation or update.
contentstringYesThe new file content. Can be provided as plain text (auto-encoded to Base64) or already Base64-encoded.
branchstringNoThe branch name. Defaults to the repository’s default branch if omitted.
shastringNoThe blob SHA of the file being replaced. Automatically fetched if not provided.
author__namestringNoAuthor’s name. If specified, author__email is also required.
author__emailstringNoAuthor’s email. If specified, author__name is also required.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_REPOSITORY_CONTENT

Retrieves a file’s Base64 encoded content or lists a directory’s contents from a GitHub repository.

NameTypeRequiredDescription
ownerstringYesRequired. The account owner of the repository. Not case-sensitive.
repostringYesRequired. The name of the repository, without the .git extension. Not case-sensitive.
pathstringYesPath to file or directory in the repository. Empty string ("") retrieves root directory contents. Do NOT pass branch names here — use the ref parameter instead.
refstringNoThe name of the commit, branch, or tag to read from. Defaults to the repository’s default branch.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_CREATE_A_RELEASE

Creates a release in a GitHub repository for a specified tag; the tag must be unique for published releases.

NameTypeRequiredDescription
ownerstringYesThe account owner of the repository (username or organization name). Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
tag_namestringYesThe name of the tag for this release. Must be unique for published releases.
namestringNoThe title of the release. Defaults to tag_name if omitted.
bodystringNoA detailed description of the release. Markdown formatting is supported.
draftbooleanNoSet to true to create an unpublished (draft) release. Defaults to false.
prereleasebooleanNoSet to true to identify this release as a pre-release. Defaults to false.
generate_release_notesbooleanNoSet to true to automatically generate the title and description from the commit history since the last release.
target_commitishstringNoThe commitish value from which the Git tag is created. Defaults to the repository’s default branch.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_GET_A_RELEASE

Gets a specific release from a GitHub repository, provided the repository is accessible and the release exists.

NameTypeRequiredDescription
ownerstringYesThe username of the account that owns the repository. Not case-sensitive.
repostringYesThe name of the repository, without the .git extension. Not case-sensitive.
release_idintegerYesThe unique numerical identifier for the release.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_SEARCH_REPOSITORIES

Searches GitHub repositories using a flexible query (keywords, qualifiers) with sorting, ordering, and pagination. The q parameter is REQUIRED.

NameTypeRequiredDescription
qstringYesREQUIRED non-empty search query. Qualifiers: language:LANG, stars:N, forks:N, topic:TOPIC, license:LICENSE, user:USERNAME, org:ORGNAME, is:public|private, archived:true|false. Max 5 AND/OR/NOT operators.
sortstringNoField to sort results by: "stars", "forks", "help-wanted-issues", "updated", or "created".
orderstringNoSort order: "desc" (default) or "asc". Effective only when sort is specified.
per_pageintegerNoNumber of repository results per page (max 100). Defaults to 30.
pageintegerNoPage number for results. Defaults to 1.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_SEARCH_CODE

Searches code file contents and paths on the default branch of GitHub repositories using a query string; searches only files under 384 KB, returns max 1000 results by best match.

NameTypeRequiredDescription
qstringYesCode search query, including keywords and qualifiers (e.g., language:python, user:octocat, repo:owner/repo).
per_pageintegerNoResults per page (max 100).
pageintegerNoPage number for results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_SEARCH_ISSUES_AND_PULL_REQUESTS

Searches GitHub for issues and pull requests. Supports keywords, qualifiers (repo:, org:, state:, label:, author:, assignee:, etc.), and type filters (is:issue, is:pr). The @me shorthand is automatically resolved to your username.

NameTypeRequiredDescription
qstringYesSearch query using GitHub’s search syntax. Type filters (is:issue, is:pr) cannot be used alone — they must be combined with at least one keyword or other qualifier. Max 5 AND/OR/NOT operators.
sortstringNoField for sorting results: "comments", "reactions", "created", "updated", and others.
orderstringNoOrder for sorted results: "asc" or "desc". Effective only when sort is provided.
per_pageintegerNoNumber of results per page.
pageintegerNoPage number for results.
response_detailstringNoLevel of detail: "minimal" (default, optimized for AI agents) or "full" (complete GitHub API response).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER

Stars a specified repository for the authenticated user; this action is idempotent and succeeds even if the repository is already starred.

NameTypeRequiredDescription
ownerstringYesRequired. The username of the account that owns the repository. Not case-sensitive.
repostringYesRequired. The name of the repository, without the .git extension. Not case-sensitive.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

GITHUB_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. When committing to a new branch, you MUST provide base_branch.

NameTypeRequiredDescription
ownerstringYesRepository owner (username or organization name).
repostringYesRepository name (without .git extension).
branchstringYesTarget branch name to commit to. If this branch doesn’t exist, you MUST provide base_branch.
messagestringYesCommit message describing the changes.
upsertsarrayNoList of files to create or update. Each entry requires path, content, and optional encoding (utf-8 or base64).
deletesarrayNoList of file paths to delete from the repository. Files must exist in the repository.
base_branchstringNoREQUIRED when committing to a new branch that doesn’t exist yet. Specifies the existing branch to create the new branch from (e.g., "main").
authorobjectNoGit author information.
committerobjectNoGit committer information.
forcebooleanNoForce update the branch reference. WARNING: Use with caution as this can overwrite commits.
max_retriesintegerNoMaximum number of retries when encountering race conditions (422 ‘not a fast forward’ errors). Set to 0 to disable retries.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.