CLI reference
jira-cli reads and searches Jira issues via JQL, creates and edits issues, moves them through workflow transitions, and manages comments. It supports Jira Cloud and Data Center / Server, and emits agent-friendly JSON with structured errors. AGENT NOTE: a companion Skill ("jira") carries the canonical usage, safety modes, and env setup and is the source of truth for driving this CLI. If you are an agent, load that Skill before composing commands. Check status with `jira-cli skill status`; install it with `jira-cli skill install`.
Generated from the command tree, so it always matches --help.
Global flags
Persistent flags accepted by every command.
| Flag | Default | Description |
|---|---|---|
--allow-writes | false | override read-only mode (defaults.read_only / JIRA_CLI_READ_ONLY) for this invocation |
--base-url | Jira site URL (overrides config) | |
--config | config directory (default ~/.angelmsger/jira) | |
--fields | comma-separated dot-path fields to keep | |
--flavor | backend flavor: cloud, datacenter or auto | |
--format, -f | output format: json, table or ndjson | |
--pretty | false | human-friendly mode for interactive terminal use only (agents/scripts should omit): TUI in `config init`, colorized JSON elsewhere; errors without a TTY |
--timeout | request timeout, e.g. 30s | |
--use-context | use a named context for this invocation | |
--verbose, -v | false | verbose diagnostics on stderr |
jira-cli auth
Inspect and manage stored credentials
jira-cli auth
jira-cli auth login
Store a credential for the configured server
jira-cli auth login
Prompt for a secret and store it securely. Run `config init` first if the server URL is not set.
Examples
jira-cli auth login jira-cli --use-context staging auth login
jira-cli auth logout
Remove the stored credential for the configured server
jira-cli auth logout
jira-cli auth status
Show whether a usable credential is configured
jira-cli auth status
jira-cli comment
Read and post issue comments
jira-cli comment
jira-cli comment add
Post a comment on an issue
jira-cli comment add <issue-key|url> [flags]
Post a comment. Bodies are plain text on both flavors: on Cloud the text becomes ADF paragraphs, on Data Center it is sent verbatim (wiki markup is rendered server-side).
Options
| Flag | Default | Description |
|---|---|---|
--body | comment body text | |
--body-file | read body from a file ('-' for stdin) | |
--dry-run | false | preview the HTTP request without sending it |
Examples
jira-cli comment add PROJ-123 --body "Deployed to staging." echo "Done." | jira-cli comment add PROJ-123 --body-file -
jira-cli comment delete
Delete one or more comments
jira-cli comment delete <comment-id>... --issue <key> [flags]
Delete a comment by ID. Pass several IDs to delete them in one run, or a single '-' to read newline-separated IDs from stdin. Deletion requires --yes (or an interactive confirmation when stdin is a terminal); --yes applies to the whole batch.
Options
| Flag | Default | Description |
|---|---|---|
--dry-run | false | preview the HTTP request without sending it |
--issue | the issue the comments belong to (required) | |
--yes | false | skip the deletion confirmation |
Examples
jira-cli comment delete 10042 --issue PROJ-123 --yes jira-cli comment delete 10042 10043 --issue PROJ-123 --yes
jira-cli comment list
List an issue's comments (oldest first)
jira-cli comment list <issue-key|url> [flags]
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli comment list PROJ-123 jira-cli comment list PROJ-123 --all
jira-cli comment update
Replace a comment's body
jira-cli comment update <comment-id> --issue <key> [flags]
Options
| Flag | Default | Description |
|---|---|---|
--body | new comment body text | |
--body-file | read body from a file ('-' for stdin) | |
--dry-run | false | preview the HTTP request without sending it |
--issue | the issue the comment belongs to (required) |
Examples
jira-cli comment update 10042 --issue PROJ-123 --body "Revised." echo "Revised." | jira-cli comment update 10042 --issue PROJ-123 --body-file -
jira-cli config
Manage jira-cli configuration
jira-cli config
jira-cli config delete-context
Delete a context and its stored credential
jira-cli config delete-context <name>
Examples
jira-cli config delete-context staging
jira-cli config get-contexts
List the configured contexts
jira-cli config get-contexts
List every context in the config file. The current context — the one used when --use-context is not given — is marked.
Examples
jira-cli config get-contexts jira-cli config get-contexts --format table
jira-cli config init
Interactively set up server URL and credentials
jira-cli config init
Run the interactive setup wizard. It collects a server URL, detects the flavor, validates a credential and stores it. The wizard can also configure additional named contexts for working with several servers.
Examples
jira-cli config init --pretty # interactive TUI (recommended) jira-cli config init # plain line-by-line wizard (scripts, non-TTY)
jira-cli config path
Print the config file path
jira-cli config path
jira-cli config show
Show the resolved configuration
jira-cli config show [flags]
Options
| Flag | Default | Description |
|---|---|---|
--explain | false | annotate each value with its source |
jira-cli config use-context
Switch the current context
jira-cli config use-context <name>
Set the current context — the server used by default. Override it for a single command with the global --use-context flag instead.
Examples
jira-cli config use-context staging
jira-cli doctor
Diagnose configuration, credentials and connectivity
jira-cli doctor [flags]
Options
| Flag | Default | Description |
|---|---|---|
--no-update-check | false | skip the check for a newer jira-cli release |
Examples
jira-cli doctor jira-cli doctor --no-update-check
jira-cli field
Discover issue fields and their allowed values
jira-cli field
jira-cli field list
List the fields on an issue type's create screen
jira-cli field list --project <key> --type <issue-type> [flags]
List the fields available when creating an issue of one type in one project: id, name, whether it is required, its schema, and how many allowed values it has (options_count). Use `field options` to read a constrained field's actual values. Custom fields appear here with their customfield_* id.
Options
| Flag | Default | Description |
|---|---|---|
--project | project key (default from defaults.project) | |
--type | issue type name or ID (see `project issuetypes`) |
Examples
jira-cli field list --project ENG --type Bug jira-cli field list --project ENG --type Bug --fields items.id,items.name,items.required
jira-cli field options
List a field's allowed values in a project
jira-cli field options <field> --project <key> [--type <issue-type>] [flags]
List the allowed values of a constrained issue field (components, fix/affects versions, priority, or a select-list custom field) in one project, from the create metadata. Jira scopes field options by context — project and issue type — so with --type the values are read for that one issue type; without it every creatable issue type is scanned and each value lists the issue types it applies to. <field> is a field id (components, priority, customfield_10010) or a display name ("Component/s", "Severity"), matched case-insensitively.
Options
| Flag | Default | Description |
|---|---|---|
--project | project key (default from defaults.project) | |
--type | restrict to one issue type name or ID (default: scan all) |
Examples
jira-cli field options components --project ENG jira-cli field options "Severity" --project ENG --type Bug
jira-cli issue
Read, search and write Jira issues
jira-cli issue
jira-cli issue assign
Change or clear an issue's assignee
jira-cli issue assign <key|url> [flags]
Assign an issue. --to accepts a Cloud accountId, a Data Center username, or a display-name/email query resolved to a unique user (see `jira-cli user resolve`).
Options
| Flag | Default | Description |
|---|---|---|
--dry-run | false | preview the HTTP request without sending it |
--to | the new assignee | |
--unassign | false | clear the assignee |
Examples
jira-cli issue assign PROJ-123 --to alice@example.com jira-cli issue assign PROJ-123 --unassign
jira-cli issue create
Create an issue
jira-cli issue create [flags]
Create an issue. --project falls back to defaults.project when configured. Descriptions are plain text on both flavors; on Cloud the text becomes ADF paragraphs, on Data Center it is sent verbatim (wiki markup is rendered server-side).
Options
| Flag | Default | Description |
|---|---|---|
--assignee | assignee (accountId, username, or display-name/email query) | |
--description | description text | |
--description-file | read the description from a file ('-' for stdin) | |
--dry-run | false | preview the HTTP request without sending it |
--label | [] | label to set (repeatable) |
--parent | parent issue key (for subtasks / epic children) | |
--priority | priority name (e.g. High) | |
--project | project key (default from defaults.project) | |
--summary | issue summary (required) | |
--type | Task | issue type name (e.g. Task, Bug, Story) |
Examples
jira-cli issue create --project ENG --type Task --summary "Fix login crash"
jira-cli issue create --project ENG --type Bug --summary "..." \
--description-file report.txt --assignee alice@example.com --label urgent
jira-cli issue edit
Update issue fields
jira-cli issue edit <key|url> [flags]
Update an issue's summary, description, priority or labels. Only the flags you pass change; everything else keeps its value.
Options
| Flag | Default | Description |
|---|---|---|
--add-label | [] | label to add (repeatable) |
--description | new description text | |
--description-file | read the new description from a file ('-' for stdin) | |
--dry-run | false | preview the HTTP request without sending it |
--priority | new priority name | |
--remove-label | [] | label to remove (repeatable) |
--summary | new summary |
Examples
jira-cli issue edit PROJ-123 --summary "New title" jira-cli issue edit PROJ-123 --add-label triaged --remove-label urgent
jira-cli issue get
Show one issue
jira-cli issue get <key|url> [flags]
Options
| Flag | Default | Description |
|---|---|---|
--expand | extra sections to request, comma-separated (e.g. changelog) |
Examples
jira-cli issue get PROJ-123 jira-cli issue get https://acme.atlassian.net/browse/PROJ-123
jira-cli issue search
Search issues with JQL or filter flags
jira-cli issue search [jql] [flags]
Search issues. Pass a raw JQL string, or compose one from filter flags (--project, --assignee, --status, --type, --label, --text; AND-joined). --assignee/--reporter accept "me" (the authenticated user) and "unassigned".
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--assignee | filter by assignee ("me", "unassigned", or a user) | |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--field | [] | issue fields to return (repeatable; default is a curated set) |
--label | filter by label | |
--limit | 0 | page size (default from config) |
--order-by | sort clause, e.g. "updated DESC" | |
--project | filter by project key | |
--reporter | filter by reporter ("me" or a user) | |
--status | filter by status name | |
--text | free-text match | |
--type | filter by issue type name |
Examples
jira-cli issue search 'project = ENG AND status = "In Progress"' jira-cli issue search --project ENG --assignee me --order-by "updated DESC" jira-cli issue search --text "login crash" --all
jira-cli issue transition
Move an issue through a workflow transition
jira-cli issue transition <key|url> --to <name-or-id> [flags]
Transition an issue. --to accepts a transition ID or name (matched case-insensitively against the transitions currently available; see `issue transitions`). Target status names also match when unambiguous.
Options
| Flag | Default | Description |
|---|---|---|
--comment | comment to add as part of the transition | |
--dry-run | false | preview the HTTP request without sending it |
--to | target transition name or ID |
Examples
jira-cli issue transition PROJ-123 --to "In Progress" jira-cli issue transition PROJ-123 --to 31 --comment "Deployed to staging."
jira-cli issue transitions
List the workflow transitions currently available on an issue
jira-cli issue transitions <key|url>
List the transitions the issue can take from its current status — the values `issue transition --to` accepts.
Examples
jira-cli issue transitions PROJ-123
jira-cli label
Browse issue labels
jira-cli label
jira-cli label list
List issue labels (Jira Cloud only)
jira-cli label list [flags]
List every label in use on the instance. Labels are free-form and instance-wide, not project-scoped. Data Center has no REST endpoint for this listing; there, discover labels from the issues that carry them (e.g. `issue search --project X --field labels`).
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli label list
jira-cli priority
Browse issue priorities
jira-cli priority
jira-cli priority list
List issue priorities
jira-cli priority list [flags]
List the priorities issues can take — the valid values for `issue create/edit --priority`. The list is instance-wide; on Jira Cloud a priority scheme may narrow what a given project accepts.
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli priority list
jira-cli project
Browse Jira projects
jira-cli project
jira-cli project components
List a project's components
jira-cli project components <key|url> [flags]
List the components defined in a project — the valid values for the issue "components" field there. On Jira Cloud the listing paginates; on Data Center the API returns the full list in one response.
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli project components ENG
jira-cli project get
Show one project
jira-cli project get <key|url>
Examples
jira-cli project get ENG
jira-cli project issuetypes
List the issue types creatable in a project
jira-cli project issuetypes <key|url> [flags]
List the issue types that can be created in a project (from the create metadata, so permissions apply) — the valid values for `issue create --type` there.
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli project issuetypes ENG
jira-cli project list
List projects visible to the authenticated user
jira-cli project list [flags]
List projects. On Jira Cloud the listing paginates and --query filters server-side; on Data Center the API returns every project in one response (a single page) and --query filters client-side.
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
--query | filter by name/key substring |
Examples
jira-cli project list jira-cli project list --query platform
jira-cli project statuses
List a project's workflow statuses per issue type
jira-cli project statuses <key|url>
List the workflow statuses valid in a project, grouped by issue type (different issue types can use different workflows). These are the values a `status = ...` JQL clause can match in that project.
Examples
jira-cli project statuses ENG
jira-cli project versions
List a project's versions
jira-cli project versions <key|url> [flags]
List the versions defined in a project — the valid values for the issue "fixVersions" and affects-versions fields there. On Jira Cloud the listing paginates; on Data Center the API returns the full list in one response.
Options
| Flag | Default | Description |
|---|---|---|
--all | false | fetch every page of results |
--cursor | start from this pagination cursor (the 'next' of a prior page) | |
--limit | 0 | page size (default from config) |
Examples
jira-cli project versions ENG
jira-cli skill
Install the companion Skill for coding agents (Claude Code, Codex, Grok Build, Pi)
jira-cli skill
jira-cli skill install
Deploy the embedded Skill into a coding agent's skills directory
jira-cli skill install [flags]
Write the companion `jira` Skill — bundled inside this binary — into a coding agent's skills directory. With no flags it probes for installed agents (Claude Code, Codex, Grok Build, Pi) and installs into each one found. Re-run it after upgrading the CLI to refresh the Skill to the matching version.
Options
| Flag | Default | Description |
|---|---|---|
--agent | [] | target agents instead of auto-detecting (claude-code, codex, grok, pi) |
--dir | explicit skills base directory; installs into <dir>/jira | |
--project | false | install into the project (./.claude/skills, ./.agents/skills, ./.grok/skills, ./.pi/skills) instead of $HOME |
jira-cli skill path
Print where the Skill would be installed, and whether it is
jira-cli skill path [flags]
Options
| Flag | Default | Description |
|---|---|---|
--agent | [] | limit to specific agents (claude-code, codex, grok, pi) |
--dir | explicit skills base directory | |
--project | false | use the project skills directories instead of $HOME |
jira-cli skill show
Print the embedded SKILL.md to stdout
jira-cli skill show
jira-cli skill status
Report whether the companion Skill is loaded and installed
jira-cli skill status [flags]
Options
| Flag | Default | Description |
|---|---|---|
--project | false | check the project skills dirs (./.claude/skills, ./.agents/skills, ./.grok/skills, ./.pi/skills) instead of $HOME |
jira-cli skill uninstall
Remove the companion Skill from a coding agent's skills directory
jira-cli skill uninstall [flags]
Delete a previously installed `jira` Skill. With no flags it probes for installed agents (Claude Code, Codex, Grok Build, Pi) and removes the Skill from each one found.
Options
| Flag | Default | Description |
|---|---|---|
--agent | [] | target agents instead of auto-detecting (claude-code, codex, grok, pi) |
--dir | explicit skills base directory; removes <dir>/jira | |
--project | false | remove from the project (./.claude/skills, ./.agents/skills, ./.grok/skills, ./.pi/skills) instead of $HOME |
jira-cli user
Discover Jira users — the values assignee flags accept
jira-cli user
jira-cli user me
Print the user the configured credentials authenticate as (alias for whoami)
jira-cli user me
jira-cli user resolve
Resolve a user selector to a unique user
jira-cli user resolve <selector>
Resolve a user selector to a unique user. Cloud: an accountId is passed through; anything else is searched by display name / email and must match exactly one active user. DC: the selector is the username and is echoed back verbatim.
jira-cli version
Print version information
jira-cli version
jira-cli whoami
Print the user the configured credentials authenticate as
jira-cli whoami
Examples
jira-cli whoami