Call any GitHub REST endpoint via gh api and return the parsed JSON. `fields` become `-f key=value` form fields and flip the default method to POST; `body` is sent verbatim as JSON. Non-2xx responses are errors carrying gh's stderr.
bodyunknown
Raw JSON request body, piped to gh via `--input -`. Mutually exclusive with fields (gh rejects the combination).
fieldsobject
Form fields, each passed as `-f key=value` (string-typed on the wire).
jqstring
jq expression gh applies to the response (`--jq`); keeps large responses small.
methodstring
HTTP method. gh defaults to GET, or POST when fields/body are present.
paginateboolean
Follow pagination to the end (`--paginate`); combine with jq.
pathstring*required
Endpoint path with concrete owner/repo values, e.g. "rate_limit" or "repos/cli/cli/issues"; `{owner}` placeholders are not expanded.
timeout_msinteger· uint64min 0
Per-call timeout in ms, clamped to the configured max_timeout_ms.
valueunknown*required
The JSON gh printed for the requested `--json` fields.
Run any gh command; `args` is the argv without the leading `gh`. A non-zero exit or a timeout is returned as data, not an error. The escape hatch for everything without a typed github::* function.
argsstring[]*required
gh argv, without the leading `gh` (e.g. ["pr", "status", "-R", "o/r"]).
stdinstring
Bytes piped to gh's stdin (for flags like `--body-file -`).
timeout_msinteger· uint64min 0
Per-call timeout in ms, clamped to the configured max_timeout_ms.
duration_msinteger· uint64*requiredmin 0
Wall-clock duration of the invocation, in ms.
exit_codeinteger· int32
Process exit code; null when the process was killed (timeout).
stderrstring*required
Captured stderr (UTF-8 lossy), capped at `max_output_bytes`.
stderr_truncatedboolean*required
True when stderr exceeded `max_output_bytes` and was truncated.
stdoutstring*required
Captured stdout (UTF-8 lossy), capped at `max_output_bytes`.
stdout_truncatedboolean*required
True when stdout exceeded `max_output_bytes` and was truncated.
timed_outboolean*required
True when the timeout expired and the process group was killed.
github::issue::close
functionClose an issue, optionally with a closing comment and a completed / not-planned reason.
commentstring
Closing comment.
numberinteger· uint64*requiredmin 0
Issue number.
reasonany of
Close reason.
any of (2)
variant 1
valuestringenum: completed, not-planned
repostring*required
Target repository, "owner/name".
outputstring*required
gh's stdout, trimmed.
github::issue::create
functionOpen a new issue in a repository, with optional labels and assignees.
assigneesstring[]
Assignee logins.
bodystring*required
Issue body (markdown).
labelsstring[]
Labels to apply.
repostring*required
Target repository, "owner/name".
titlestring*required
Issue title.
outputstring*required
gh's stdout, trimmed.
github::issue::edit
functionEdit an issue's title, body, labels, or assignees.
add_assigneesstring[]
Assignee logins to add.
add_labelsstring[]
Labels to add.
bodystring
New body (markdown).
numberinteger· uint64*requiredmin 0
Issue number.
remove_labelsstring[]
Labels to remove.
repostring*required
Target repository, "owner/name".
outputstring*required
gh's stdout, trimmed.
github::issue::list
functionList issues in a repository. Filter by state, author, labels, assignee, or a search query.
assigneestring
Filter by assignee login.
authorstring
Filter by author login.
labelsstring[]
Filter by labels (all must match).
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
repostring*required
Target repository, "owner/name".
searchstring
Search query narrowing the list further (GitHub search syntax).
stateany of
Filter by state (gh default: open).
any of (2)
variant 1
valuestringenum: open, closed, all
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::issue::view
functionView one issue with its body and comments.
numberinteger· uint64*requiredmin 0
Issue number.
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::on-config-change
functionInternal: reload github configuration when it changes.
github::pr::checks
functionCheck whether CI passed on a pull request. Failing or pending checks are data, not errors.
numberinteger· uint64*requiredmin 0
Pull request number.
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::pr::create
functionOpen a pull request from a head branch. head is required: the worker runs outside any checkout, so gh cannot infer a current branch.
basestring
Base branch to merge into (gh default: the repo default branch).
bodystring*required
Pull request body (markdown).
draftboolean
Open as draft.
headstring*required
Head branch the PR ships. Required: the worker runs outside any checkout, so gh cannot infer a current branch.
repostring*required
Target repository, "owner/name".
titlestring*required
Pull request title.
outputstring*required
gh's stdout, trimmed.
Read the code changes of a pull request as a unified diff. truncated is true when the diff exceeded the capture cap.
numberinteger· uint64*requiredmin 0
Pull request number.
repostring*required
Target repository, "owner/name".
diffstring*required
The unified diff as printed by `gh pr diff`.
truncatedboolean*required
True when the diff exceeded the capture cap and was cut off.
Edit a pull request's title, body, base branch, or labels.
add_labelsstring[]
Labels to add.
basestring
New base branch.
bodystring
New body (markdown).
numberinteger· uint64*requiredmin 0
Pull request number.
remove_labelsstring[]
Labels to remove.
repostring*required
Target repository, "owner/name".
outputstring*required
gh's stdout, trimmed.
List pull requests in a repository. Filter by state, author, labels, base branch, or a search query.
authorstring
Filter by author login.
basestring
Filter by base branch.
labelsstring[]
Filter by labels (all must match).
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
repostring*required
Target repository, "owner/name".
searchstring
Search query narrowing the list further (GitHub search syntax).
stateany of
Filter by state (gh default: open).
any of (2)
variant 1
valuestringenum: open, closed, merged, all
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::pr::merge
functionMerge a pull request with merge, squash, or rebase. auto enables auto-merge once requirements pass.
autoboolean
Enable auto-merge: merge automatically once requirements pass.
delete_branchboolean
Delete the head branch after merging.
methodall of*required
Merge method.
all of (1)
variant 1
valuestringenum: merge, squash, rebase
numberinteger· uint64*requiredmin 0
Pull request number.
repostring*required
Target repository, "owner/name".
outputstring*required
gh's stdout, trimmed.
github::pr::review
functionReview a pull request: approve, request changes, or comment. gh requires body for request-changes and comment reviews.
bodystring
Review body (gh requires it for request-changes and comment).
eventall of*required
Review event.
all of (1)
variant 1
valuestringenum: approve, request-changes, comment
numberinteger· uint64*requiredmin 0
Pull request number.
repostring*required
Target repository, "owner/name".
outputstring*required
gh's stdout, trimmed.
View one pull request with its body, mergeability, review decision, and diff stats.
numberinteger· uint64*requiredmin 0
Pull request number.
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::release::create
functionCreate a GitHub release for a tag, optionally as a draft or prerelease. generate_notes autogenerates notes from merged PRs.
draftboolean
Create as draft.
generate_notesboolean
Autogenerate notes from merged PRs since the last release.
notesstring
Release notes body (markdown).
prereleaseboolean
Mark as prerelease.
repostring*required
Target repository, "owner/name".
tagstring*required
Tag to release (created at target if it does not exist).
targetstring
Target branch or commit SHA for the tag (gh default: the default branch).
titlestring
Release title.
outputstring*required
gh's stdout, trimmed.
github::release::list
functionList a repository's releases with their tags and draft/prerelease flags.
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::release::view
functionView one release by tag, including its notes and attached assets.
repostring*required
Target repository, "owner/name".
tagstring*required
Release tag (e.g. "v1.2.0").
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::repo::list
functionList the repositories owned by a user or organization. owner defaults to the authenticated user.
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
ownerstring
User or organization login (default: the authenticated user).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::repo::view
functionView a repository's metadata: description, default branch, visibility, stars, language, topics, and latest release.
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::run::cancel
functionCancel a workflow run that is still in progress.
repostring*required
Target repository, "owner/name".
run_idinteger· uint64*requiredmin 0
Workflow run id.
outputstring*required
gh's stdout, trimmed.
github::run::list
functionList recent GitHub Actions runs (CI builds) in a repository. Filter by workflow, branch, or status.
branchstring
Filter by branch.
limitinteger· uint32min 0
Maximum number of results (gh default: 20).
repostring*required
Target repository, "owner/name".
statusstring
Filter by status (e.g. completed, in_progress, queued, failure, success).
workflowstring
Filter by workflow (file name, e.g. "ci.yml").
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::run::rerun
functionRerun a workflow run. failed reruns only the failed jobs.
failedboolean
Rerun only the failed jobs.
repostring*required
Target repository, "owner/name".
run_idinteger· uint64*requiredmin 0
Workflow run id.
outputstring*required
gh's stdout, trimmed.
github::run::view
functionView one workflow run with its jobs and their steps.
repostring*required
Target repository, "owner/name".
run_idinteger· uint64*requiredmin 0
Workflow run id (databaseId from github::run::list).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::search::code
functionSearch code across GitHub repositories for a string or symbol. Use qualifiers like "repo:o/r language:rust symbol".
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
querystring*required
Search query (GitHub search syntax, qualifiers included).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::search::issues
functionSearch issues across GitHub repositories. Use qualifiers like "repo:o/r is:open label:bug".
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
querystring*required
Search query (GitHub search syntax, qualifiers included).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::search::prs
functionSearch pull requests across GitHub repositories. Use qualifiers like "repo:o/r is:open review:required".
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
querystring*required
Search query (GitHub search syntax, qualifiers included).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::search::repos
functionSearch GitHub for repositories matching a query. GitHub search syntax (e.g. "language:rust stars:>100 topic:cli").
limitinteger· uint32min 0
Maximum number of results (gh default: 30).
querystring*required
Search query (GitHub search syntax, qualifiers included).
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::ui-content
functionServe the github worker's injected console UI assets (content function for its console:script / console:style triggers).
pathstring*required
The asset path from the trigger config (e.g. `state/page.js`).
contentstring*required
The asset source, verbatim.
content_typestring*required
MIME type the console should serve the asset with.
github::workflow::list
functionList the workflow definitions (.github/workflows files) in a repository. all includes disabled workflows.
allboolean
Include disabled workflows.
repostring*required
Target repository, "owner/name".
valueunknown*required
The JSON gh printed for the requested `--json` fields.
github::workflow::run
functionTrigger a workflow run (workflow_dispatch) on a branch or tag. inputs become -f key=value pairs.
inputsobject
workflow_dispatch inputs, each passed as `-f key=value`.
refstring
Branch or tag to run on (gh default: the repo default branch).
repostring*required
Target repository, "owner/name".
workflowstring*required
Workflow file name (e.g. "release.yml") or numeric id.
outputstring*required
gh's stdout, trimmed.