Skip to content

neo issue

Manage issues.

Addressed repo-bound as owner/repo#N or team-scoped as KEY-N.

neo issue [OPTIONS] <COMMAND>

Create an issue.

Repo-bound by default; --team with no repo target creates a team-scoped issue (KEY-N) instead. Fields come from flags, an issue document (--edit, --from-file), or both — flags win.

neo issue create [OPTIONS] [TARGET]
Option Value Required Default Env Values Description
<TARGET> no <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted (unless --team alone makes the issue team-scoped)
--title <TITLE> no Title, required unless --edit or --from-file supplies it. It is the whole of what a list, a search result or a link preview shows; the detail belongs in --body
--body <BODY> no Markdown description. Mutually exclusive with --body-file
--body-file <PATH> no Read the markdown description from a file instead of a shell argument — - reads stdin. Avoids shell-quoting long bodies. Mutually exclusive with --body
--priority <PRIORITY> no none, urgent, high, medium, low Priority to file it at. Left to the server’s default when omitted
--status <STATUS> no backlog, todo, in_progress Initial status. Omitted: backlog for a ticket (the board’s intake column), todo for a repo issue
--label <NAME> no Label to attach, by name; repeatable. Resolved against the repo’s or team’s labels (labels lists them) before anything is created, so a typo files nothing. Replaces the document’s labels when given
--assignee <HANDLE> no Handle to assign (alice or @alice; @me is you); repeatable. Replaces the document’s assignees when given
--edit, -e no Write it in $VISUAL / $EDITOR (else vi): opens an issue document — a template on create, the current values on edit — and applies what you save. Saving an empty title on create aborts with nothing sent; edit sends only what changed. Flags given beside it win over what you save
--from-file <PATH> no Read an issue document (frontmatter, then the markdown body) from PATH; - reads stdin. The non-interactive twin of --edit, for an editor plugin piping a buffer in. Keys the document leaves out keep their current value on edit; flags given beside it win
--team <TEAM> no Team key (ENG or <workspace>/ENG) to file a ticket on that team instead of an issue on a repository. Not combinable with a repo target: a repo issue carries no team
--json no Print the created issue as JSON

List issues in a repo (or a team with --team).

A team list is filtered by the server and follows every page; a repo list is one server page (--search applied there) with the other filters applied to its rows.

neo issue list [OPTIONS] [TARGET]
Option Value Required Default Env Values Description
<TARGET> no <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted
--team <TEAM> no Team key (ENG or <workspace>/ENG) — list that team’s issues instead of a repo’s
--state <STATE> no open open, closed, all, backlog, todo, in_progress, in_review, done, cancelled, duplicate open (non-terminal), closed (done/cancelled/duplicate), all, or one exact status
--search <TEXT> no Only issues whose title, description or number contain TEXT (case-insensitive, matched by the server)
--label <NAME> no Only issues carrying this label, by name
--assignee <HANDLE> no Only issues assigned to HANDLE; @me is you
--priority <PRIORITY> no none, urgent, high, medium, low Only issues at this priority
--limit <N> no Stop after N issues. Omitted: every page
--json no Print {issues} as JSON, every fetched page merged

List the issues and tickets assigned to you, across every repo and team.

--created lists the ones you filed instead. Same list as neo ticket mine: both kinds, each under its own reference.

neo issue mine [OPTIONS]
Option Value Required Default Env Values Description
--created no The ones you filed, instead of the ones assigned to you
--state <STATE> no open open, closed, all open (non-terminal), closed (done/cancelled/duplicate) or all
--limit <N> no Stop after N. Omitted: every page
--json no Print every page, merged, as one JSON response

List the labels a repo (or a team with --team) offers.

The names --label, --add-label and an issue document’s labels resolve against.

neo issue labels [OPTIONS] [TARGET]
Option Value Required Default Env Values Description
<TARGET> no <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted
--team <TEAM> no Team key (ENG or <workspace>/ENG) — that team’s labels instead of a repo’s
--json no Print {labels} as JSON

Show one issue with its comments

neo issue view [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--json no Print {issue, comments} as JSON
--document no Print it as an issue document (frontmatter with its labels and assignees, then the body) — the format edit --from-file reads back, for an editor plugin’s buffer

Agent context pack for an issue (always JSON).

The issue plus its labels, links, comments, and every linked PR (open AND closed) with a checks summary and review comments/threads. --attachments <DIR> also downloads the images it references.

neo issue context [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--attachments <DIR> no Also download every attachment the pack references into DIR (created if missing), as <id>.<ext>. stdout is still exactly the JSON pack; each attachment gets one line on stderr, /a/<id> -> <path>, or a skip line for one you cannot read, which is not an error
--json no Accepted so every verb takes --json; the pack is always JSON

Close an issue with a terminal status

neo issue close [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--reason <REASON> no done done, cancelled, duplicate Terminal status to close it with
--comment <BODY> no Markdown comment to post before closing
--json no Print the updated issue as JSON

Edit an issue’s fields, labels and assignees.

Only what differs from the issue’s current state is sent; anything omitted keeps its current value. At least one of --title, --body, --body-file, --priority, --status, a label or assignee flag, --edit or --from-file is required. A failure partway through reports which writes landed and which were never attempted.

neo issue edit [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--title <TITLE> no Replace the title
--body <BODY> no Markdown description. Mutually exclusive with --body-file
--body-file <PATH> no Read the markdown description from a file instead of a shell argument — - reads stdin. Avoids shell-quoting long bodies. Mutually exclusive with --body
--priority <PRIORITY> no none, urgent, high, medium, low Replace the priority
--status <STATUS> no backlog, todo, in_progress, in_review, done, cancelled, duplicate Move it to this status. Sent by transition, as the web UI does: to a terminal status (done/cancelled/duplicate) it is a close with that reason; from a terminal status to an open one it is a reopen, then the status; between open statuses it is the plain field write. A document’s status: is sent the same way
--add-label <NAME> no Attach a label, by name; repeatable. Resolved against the repo’s or team’s labels (labels lists them)
--remove-label <NAME> no Detach a label, by name; repeatable. One that is not attached is left alone
--add-assignee <HANDLE> no Assign someone (alice or @alice; @me is you); repeatable
--remove-assignee <HANDLE> no Unassign someone; repeatable. One who is not assigned is left alone
--edit, -e no Write it in $VISUAL / $EDITOR (else vi): opens an issue document — a template on create, the current values on edit — and applies what you save. Saving an empty title on create aborts with nothing sent; edit sends only what changed. Flags given beside it win over what you save
--from-file <PATH> no Read an issue document (frontmatter, then the markdown body) from PATH; - reads stdin. The non-interactive twin of --edit, for an editor plugin piping a buffer in. Keys the document leaves out keep their current value on edit; flags given beside it win
--json no Print the updated issue as JSON

Re-open a closed issue

neo issue reopen [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--json no Print the updated issue as JSON

Comment on an issue

neo issue comment [OPTIONS] --body <BODY> <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--body <BODY> yes Markdown comment body
--json no Print the created comment as JSON

Atomically claim an issue (backlog/todo → in_progress, assigned to you).

Exactly one claimer wins; a lost claim exits non-zero with the server’s 409 — the agent loop’s mutual exclusion.

neo issue claim [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--json no Print the claimed issue as JSON

Release a claimed issue: in_progress → todo, drop your assignment

neo issue release [OPTIONS] <ISSUE> [TARGET]
Option Value Required Default Env Values Description
<ISSUE> yes Issue to act on: 42 in the repo, or the team-scoped ENG-42 (or <workspace>/ENG-42). ENG-42 already names its team, so it combines with neither --team nor a repo target
<TARGET> no <owner>/<repo> or bare <repo>, for a repo-bound issue. Inferred from a checkout remote pointing at this host when omitted. Not combinable with --team
--team <TEAM> no Team key (ENG or <workspace>/ENG), for a team-scoped issue. Not combinable with a repo target
--json no Print the released issue as JSON