jira-cli

command module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2026 License: MIT Imports: 5 Imported by: 0

README

Jira CLI

A fast, scriptable command-line interface for Jira — Cloud and Server/Data Center — over the REST API. Manage issues, JQL search, transitions, comments, worklogs, attachments, links, boards and sprints from your terminal.

Designed for both human operators and coding agents. All list/get commands support -o json and -o yaml for machine-readable output.

Go Version Release License CI

Independent open-source wrapper over the Jira REST API. Not affiliated with Atlassian and unrelated to Atlassian's official acli.

Features

  • Every auth method — Cloud API token (default), scoped API token, OAuth 2.0 (3LO) browser login with auto-refresh, Server/DC personal access token, and username/password. See docs/CREDENTIALS.md.
  • Issues — JQL search, list, get, create, edit, delete, assign, transition.
  • Around issues — comments, worklogs, attachments (upload/download), links, watchers, votes.
  • Projects, users, fields and Agile boards / sprints / epics.
  • ADF-aware — descriptions and comments are sent as Atlassian Document Format; --markdown supported.
  • Agent-friendly-o json|yaml, --read-only safety mode, --no-input, env-var config, clean stdout/stderr separation, automatic rate-limit (429) backoff.
  • Cross-platform — macOS, Linux, Windows (amd64 and arm64). Multiple named profiles.

Installation

Installs the latest prebuilt binary for your OS/arch:

curl -sSfL https://raw.githubusercontent.com/piyush-gambhir/jira-cli/main/install.sh | sh

Pin a version or change the install directory:

curl -sSfL https://raw.githubusercontent.com/piyush-gambhir/jira-cli/main/install.sh | VERSION=0.1.1 sh
curl -sSfL https://raw.githubusercontent.com/piyush-gambhir/jira-cli/main/install.sh | INSTALL_DIR=~/.local/bin sh
Download a release manually

Prebuilt binaries for every platform are attached to each GitHub Release. Download the archive for your OS/arch, extract, and put jira on your PATH:

# example (macOS arm64) — adjust the version/asset name
curl -sSfL https://github.com/piyush-gambhir/jira-cli/releases/latest/download/jira-cli_darwin_arm64.tar.gz | tar xz
sudo mv jira /usr/local/bin/

Assets are named jira-cli_<os>_<arch>.tar.gz (lowercase), where <os> is darwin or linux and <arch> is amd64 or arm64 (Windows ships as jira-cli_windows_amd64.zip).

Alternative (build from source, requires Go)

Requires the Go 1.22+ toolchain.

go install github.com/piyush-gambhir/jira-cli@latest

Or clone and build:

git clone https://github.com/piyush-gambhir/jira-cli.git
cd jira-cli
make install          # builds and installs to $GOBIN / $GOPATH/bin

The binary is jira.

Quick start

# 1. Authenticate — API token is the simplest setup
jira auth login --type api_token
#    prefer an API token (no app needed)? — prompts for site, email, token
jira auth login --type api_token
#    or non-interactively / in CI (uses API token under the hood):
export JIRA_SITE=https://acme.atlassian.net JIRA_EMAIL=me@acme.com JIRA_TOKEN=xxxx

# 2. Confirm
jira whoami
jira status

# 3. Work
jira issue search "assignee = currentUser() AND statusCategory != Done" -o json
jira issue create -p ABC --type Task --summary "Set up CI" -d "Details here"
jira issue transition ABC-123 "In Progress"
jira issue comment ABC-123 --body "On it"

Authentication methods

--type Deployment Credential
oauth2 (default) Cloud OAuth 2.0 3LO browser login (requires your app client ID and secret)
api_token Cloud email + API token (no app needed)
scoped Cloud email + scoped token (api.atlassian.com gateway)
pat Server/DC bearer personal access token
basic Server/DC username + password
jira auth login --type pat --site https://jira.company.com --token "$PAT"
jira auth login --type oauth2 --client-id "$ID" --client-secret "$SECRET" --scope-preset admin
jira auth list   ;   jira auth use staging   ;   jira auth logout --name staging

OAuth scopes are selectable: --scope-preset read|write|admin|all (or an interactive picker), plus granular --scope. See docs/CREDENTIALS.md.

For end users

Everyone authenticates to their own Jira account. For OAuth, register a 3LO app and pass its client ID and secret; these credentials are stored only in your local protected config. For the simplest setup, run jira auth login --type api_token and paste a token from id.atlassian.com.

Output

-o table (default), -o json, -o yaml. Informational messages go to stderr; data goes to stdout, so jira ... -o json | jq is always safe.

Documentation

Releasing (maintainers)

Releases are built by GoReleaser via GitHub Actions on any v* tag — see .github/workflows/release.yml and .goreleaser.yaml.

git tag -s v0.1.0 -m "v0.1.0"     # signed tag
git push origin v0.1.0            # -> CI builds cross-platform binaries + checksums and publishes a Release

Release binaries never embed OAuth client secrets. Users bring their own 3LO app credentials or use an API token; a future zero-configuration OAuth experience should use a server-side authorization broker so no reusable client secret is distributed in a public binary.

Development

make build     # -> bin/jira
make test      # go test -race ./...
make vet
make fmt       # gofmt -s -w .

Commits and tags are signed and required — the repository enforces a "require signed commits" ruleset on GitHub, and local config (commit.gpgsign, tag.gpgsign) signs by default. See CONTRIBUTING.md.

License

See LICENSE.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
adf
Package adf builds Atlassian Document Format (ADF) documents.
Package adf builds Atlassian Document Format (ADF) documents.
auth
Package auth implements every authentication method supported by the Jira REST API.
Package auth implements every authentication method supported by the Jira REST API.
client
Package client is a thin HTTP client for the Jira REST API.
Package client is a thin HTTP client for the Jira REST API.
update
Package update implements a best-effort background check for newer releases on GitHub, cached for 24h so it never slows normal command execution.
Package update implements a best-effort background check for newer releases on GitHub, cached for 24h so it never slows normal command execution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL