---
name: "gt-issue-create"
section: "1"
platform: "linux"
package: "gitea-cli"
version: "1.0.0-1"
release: "Arch Linux 2026-11-07"
platforms: ["linux"]
url: "https://carta.tech/man/gt-issue-create"
---

# gt-issue-create(1)

Create an issue

## NAME

gt-issue-create - Create an issue

## SYNOPSIS

**gt issue create \[flags\]**

## DESCRIPTION

Create an issue in a repository. Without flags on a terminal, a form asks for the title and body, then optionally for assignees, a milestone, labels and a due date.

Gitea sets labels, a milestone, assignees and a due date only for people who can write to the issues of the repository, and creates the issue without them for others: gt then names the flags or form fields it left out and fails, and warns about left-out labels of a template. Adding the issue to a project needs write access too; when that fails, the issue stays created and the error names the command that adds it later.

\--template starts from a repository issue template: its title, body, labels and ref. --title, --label, --body, --body-file and --ref replace them; labels the repository lacks are left out. A form (YAML) template starts with an empty body. On a terminal the form opens with the title and body, and a template picked in the form applies its labels too. The title of a template is a prefix to complete, so without the form --template requires --title. --web opens the new-issue page with the whole template applied.

### JSON FIELDS

```
assignees, author, body, comments, created_at, due_date, id, kind, labels,
milestone, number, ref, state, title, updated_at, url
```

## OPTIONS

**-a**, **--assignee**=\[\]\
 	Assign people by their **login**; @me for yourself

**--attachment**=\[\]\
 	**File** to attach after creation (repeatable)

**-b**, **--body**=""\
 	Issue body

**-F**, **--body-file**=""\
 	Read body from **file**, or - for stdin

**--deadline**=""\
 	Due **date**: YYYY-MM-DD, RFC3339 or Unix timestamp; only the date counts, as the end of that day in UTC

**-e**, **--editor**\[=false\]\
 	Compose the issue body in the configured editor

**-h**, **--help**\[=false\]\
 	help for create

**-l**, **--label**=\[\]\
 	Add labels by **name**; prefix repo: or org: to disambiguate

**-m**, **--milestone**=""\
 	Add the issue to a milestone by **title** or ID, a number being an ID first

**-p**, **--project**=\[\]\
 	Add the issue to the repository's or its owner's project with this ID or **title**, a number being an ID first (repeatable)

**--ref**=""\
 	Branch or tag the issue refers to

**-T**, **--template**=""\
 	Start from the repository issue template with this **name**

**-t**, **--title**=""\
 	Issue title

**-w**, **--web**\[=false\]\
 	Continue in the browser with the new-issue page

## OPTIONS INHERITED FROM PARENT COMMANDS

**--csv**\[=""\]\
 	Output CSV with the specified comma-separated **fields**, or all fields

**--cwd**=""\
 	Working **directory** for repository discovery

**--debug**\[=false\]\
 	Log the method, URL, status, and duration of each HTTP request to stderr

**--host**=""\
 	Gitea instance **URL**, including any base path

**--interactive**\[=false\]\
 	Allow prompts with machine output

**-q**, **--jq**=""\
 	Filter JSON output using a jq **expression**; implies --json

**--json**\[=""\]\
 	Output JSON with the specified comma-separated **fields**, or all fields

**--no-input**\[=false\]\
 	Disable prompts and implicit editor/browser interactions

**--remote**=""\
 	Git **remote** used for repository discovery

**-R**, **--repo**=""\
 	Select a repository as **OWNER/REPO** or URL

**--sudo**=""\
 	Perform API requests as this **user** (requires an administrator account)

**--user**=""\
 	Account **name** on the selected instance

## EXAMPLE

```
$ gt issue create
$ gt issue create --title "Crash on start" --body "Steps to reproduce…" --label bug --milestone v1.0
$ gt issue create --template "Bug report"
```

## SEE ALSO

**[gt-issue(1)](/man/gt-issue/1.md)**
