GitHub Issues Create

GitHub Issues Create

Certified

Create an issue

Creates a new GitHub issue in the target repository. The authenticated token must be allowed to open issues, and property values are rendered before the issue is created.

yaml
type: io.kestra.plugin.github.issues.Create

Create an issue in a repository using JWT token.

yaml
id: github_issue_create_flow
namespace: company.team

tasks:
  - id: create_issue
    type: io.kestra.plugin.github.issues.Create
    jwtToken: "{{ secret('GITHUB_JWT_TOKEN') }}"
    repository: kestra-io/kestra
    title: Workflow failed
    body: "{{ execution.id }} has failed on {{ taskrun.startDate }}. See the link below for more details"
    labels:
      - bug
      - workflow

Create an issue in a repository using OAuth token.

yaml
id: github_issue_create_flow
namespace: company.team

tasks:
  - id: create_issue
    type: io.kestra.plugin.github.issues.Create
    login: your_github_login
    oauthToken: "{{ secret('GITHUB_ACCESS_TOKEN') }}"
    repository: kestra-io/kestra
    title: Workflow failed
    body: "{{ execution.id }} has failed on {{ taskrun.startDate }}. See the link below for more details"
    labels:
      - bug
      - workflow

Create an issue in a repository with assignees.

yaml
id: github_issue_create_flow
namespace: company.team

tasks:
  - id: create_issue
    type: io.kestra.plugin.github.issues.Create
    oauthToken: "{{ secret('GITHUB_ACCESS_TOKEN') }}"
    repository: kestra-io/kestra
    title: Workflow failed
    body: "{{ execution.id }} has failed on {{ taskrun.startDate }}. See the link below for more details"
    labels:
      - bug
      - workflow
    assignees:
      - MyDeveloperUserName
      - MyDesignerUserName

Create an issue and set custom Issue Field values using human-readable field names.

yaml
id: github_issue_create_with_fields_flow
namespace: company.team

tasks:
  - id: create_issue
    type: io.kestra.plugin.github.issues.Create
    oauthToken: "{{ secret('GITHUB_ACCESS_TOKEN') }}"
    repository: kestra-io/kestra
    title: Automated issue with custom fields
    body: "Created by Kestra workflow {{ execution.id }}"
    labels:
      - automation
    fields:
      Customer: "Kestra"
      Stage: "In review"
Installation

Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:

kestractl plugins get io.kestra.plugin:plugin-github --compatible-for $KESTRA_VERSION

For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.

For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.

Properties

GitHub App installation token

Installation access token generated by a GitHub App. Use this for repository-scoped app access instead of a user token.

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
SubTypestring

Issue assignees

GitHub logins to assign when the issue is created

Issue body

Markdown body for the issue. This value is rendered before the request is sent

GitHub API endpoint

GitHub or GitHub Enterprise API base URL such as https://api.github.com or https://ghe.acme.com/api/v3. Set this when targeting GitHub Enterprise or a non-default API endpoint.

Issue field values

Custom field values to set on the issue after creation, using the GitHub Issues field-values API (API version 2026-03-10). Only available for organization repositories — personal repositories always return HTTP 404. Keys can be either human-readable field names (e.g. "Customer", "Stage") or field node IDs (e.g. PVTF_…). Human-readable names are resolved automatically to node IDs via the GitHub API (GET /orgs/{org}/issues/field-definitions). Values are the field values to set. Unsupported value types are passed through as-is; GitHub will return a 422 if the type is invalid. Requires a token with the project scope in addition to issues: write. When null or empty the REST call is skipped entirely and existing behavior is preserved.

GitHub JWT token

GitHub App JWT used for app-level authentication. Use this when the task should authenticate as the app rather than a user.

SubTypestring

Issue labels

Labels to apply to the issue when it is created

GitHub login

GitHub login used with oauthToken for authenticated requests. Leave unset when authenticating with jwtToken or appInstallationToken.

GitHub OAuth token

GitHub personal access token used for authenticated requests. Can be used alone or with login.

Target repository

Repository in owner/repo format where the issue will be created

Issue title

Short summary shown in GitHub.

Issue number

Numeric issue number assigned by GitHub

Issue URL

GitHub URL for the created issue

Definitions
authoritystring
filestring
hoststring
portinteger
protocolstring
refstring