GitHub

Interact with GitHub repositories from a workflow — create issues and pull requests, comment on issues, list repos, and read or write files via the GitHub REST API.

Setup

Create a GitHub Personal Access Token with the scopes required for your operations (typically repo for private repositories, or public_repo for public repos only).

Add it as an environment variable on the Env Vars page:

| Variable | Description | |----------|-------------| | GITHUB_TOKEN | GitHub Personal Access Token (e.g. ghp_...) |

Operations

Each node run executes a single operation.

create_issue

Create a new issue in a repository.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | create_issue | | owner | string | Yes | Repository owner (user or organization). | | repo | string | Yes | Repository name. | | title | string | Yes | Issue title. Supports {{ }} bindings. | | body | string | No | Issue body (Markdown). | | labels | string | No | Comma-separated label names. |

comment_on_issue

Add a comment to an existing issue.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | comment_on_issue | | owner | string | Yes | Repository owner. | | repo | string | Yes | Repository name. | | issue_number | number | Yes | Issue number to comment on. | | body | string | Yes | Comment body (Markdown). |

create_pr

Open a pull request.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | create_pr | | owner | string | Yes | Repository owner. | | repo | string | Yes | Repository name. | | title | string | Yes | Pull request title. | | body | string | No | Pull request description. | | head_branch | string | Yes | Source branch containing your changes. | | base_branch | string | No | Target branch (default main). |

list_repos

List repositories accessible to the authenticated token.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | list_repos |

get_file

Read a file from a repository.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | get_file | | owner | string | Yes | Repository owner. | | repo | string | Yes | Repository name. | | file_path | string | Yes | Path to the file in the repo (e.g. src/index.ts). |

create_or_update_file

Create or update a file in a repository (commits directly to a branch).

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | create_or_update_file | | owner | string | Yes | Repository owner. | | repo | string | Yes | Repository name. | | file_path | string | Yes | Path for the file in the repo. | | file_content | string | Yes | File content to write. | | commit_message | string | Yes | Commit message for the change. |

As an AI Agent Tool

Connect a GitHub node to an AI Agent Tools handle to let the agent interact with your repositories.

Use Allowed Operations (Agent) to restrict which GitHub actions the agent can perform — for example, allow create_issue and comment_on_issue but not create_or_update_file. This setting is excluded from the tool schema.

Example agent use cases:

  • "Create a bug report" — agent calls create_issue with a title and body derived from the conversation.
  • "Comment on the PR" — agent calls comment_on_issue with the issue/PR number and a review comment.

When used as a tool, the agent supplies operation and the relevant fields as tool arguments.

Output

All operations emit a result object on the result handle, accessible downstream as {{ github.* }}:

| Field | Type | Description | |-------|------|-------------| | success | boolean | Whether the operation succeeded | | url | string | URL to the created resource (issue, PR, or file) when applicable | | data | object | Raw GitHub API response payload | | error | string | Error message if success is false |

{
  "success": true,
  "url": "https://github.com/owner/repo/issues/42",
  "data": { "number": 42, "title": "Bug report", "state": "open" },
  "error": null
}
On this page