What is a Jira CLI?
A Jira CLI (command-line interface) is a tool that lets you interact with Jira directly from your terminal. Instead of clicking through the Jira web UI to search issues, create tickets, or transition workflows, you run commands like atlassian-cli jira search --jql "project = DEV" and get results instantly.
Jira CLI tools are used by DevOps engineers who need to automate ticket creation in pipelines, platform engineers managing thousands of issues across projects, and Jira admins performing bulk operations that would take hours in the browser. If your workflow involves Jira and a terminal, a Jira CLI eliminates context-switching and unlocks automation that the web UI simply cannot provide.
Why Use Jira from the Command Line?
The Jira web UI is designed for visual browsing, not for speed or automation. Here's why teams switch to a Jira command line tool:
- Speed. Searching issues with JQL from the terminal returns results in under a second. No page loads, no waiting for JavaScript to render. A single command replaces a dozen clicks.
- Scriptability. Shell scripts can chain Jira commands together. Search for stale issues, transition them, add a comment, and notify Slack -- all in one script. This is impossible from the web UI without manual repetition.
- CI/CD integration. Automatically create Jira issues when a deployment fails. Transition tickets to "Done" when a PR merges. Update custom fields with build metadata. A Jira CLI tool plugs directly into GitHub Actions, GitLab CI, or Jenkins.
- Bulk operations at scale. Need to transition 500 issues from "In Progress" to "Done" during a project cleanup? A single
jira bulk transitioncommand handles it with concurrency and rate-limit awareness. In the browser, that's 500 separate clicks. - Machine-readable output. Get issue data as JSON, CSV, or YAML. Pipe it to
jqfor filtering, export to a spreadsheet, or feed it into another tool. The Jira CLI turns Jira into a data source for your automation stack.
Top Jira CLI Tools Compared
Several Jira CLI tools exist in 2026, each with different strengths. Here's an honest comparison:
| Tool | Language | Products | Auth | Output Formats | Bulk Ops | Active |
|---|---|---|---|---|---|---|
| atlassian-cli | Rust | Jira, Confluence, Bitbucket, JSM | API token, Bearer, profiles | Table, JSON, CSV, YAML | Yes + dry-run | Yes |
| ankitpokhrel/jira-cli | Go | Jira only | API token | Table, JSON | Limited | Yes |
| go-jira | Go | Jira only | API token, session | Go templates | No | Archived |
| ACLI (Appfire) | Java | Jira, Confluence, more | Multiple | CSV, custom | Yes | Yes (paid) |
atlassian-cli is the only open-source tool that covers four Atlassian products in a single binary. Written in Rust, it compiles to a native executable with no runtime dependencies. Profile support lets you manage multiple Atlassian instances (dev, staging, prod) from one config file. Bulk operations include dry-run mode, concurrency control, and rate-limit handling.
ankitpokhrel/jira-cli is a solid choice if you only need Jira. It includes a TUI (terminal UI) with an interactive issue board view, which is great for visual browsing in the terminal. Written in Go, it's fast and well-maintained.
go-jira was once the most popular Jira CLI, but it's been archived and is no longer maintained. If you're using go-jira today, it's worth migrating to a maintained alternative.
ACLI by Appfire is an enterprise-focused Java CLI that supports Jira, Confluence, and other Atlassian products. It's powerful but requires a paid license and a Java runtime. Best suited for organizations that already use Appfire's ecosystem.
Getting Started with atlassian-cli
Install
Choose your preferred installation method:
# Homebrew (macOS / Linux)
brew tap omar16100/atlassian-cli
brew install atlassian-cli
# Cargo (Rust toolchain)
cargo install atlassian-cli
# Verify
atlassian-cli --version
You can also download pre-built binaries for macOS, Linux, and Windows from the GitHub Releases page.
Authentication
The CLI uses Atlassian API tokens for authentication. Create a token at id.atlassian.com, then configure a profile:
# Add a profile with your Atlassian credentials
atlassian-cli auth login \
--profile work \
--base-url your-domain.atlassian.net \
--email you@company.com \
--token $ATLASSIAN_API_TOKEN \
--default
# Verify authentication
atlassian-cli auth list
Credentials are stored with AES-256-GCM encryption in ~/.atlassian-cli/config.yaml. You can manage multiple profiles for different Atlassian instances (dev, staging, production) and switch between them with the --profile flag.
Your first command
Search for recent issues in a project:
atlassian-cli jira search --jql "project = DEV order by created desc" --limit 5
This returns a formatted table by default. Add --format json for machine-readable output, or --format csv for spreadsheets.
Essential Jira CLI Commands
Search issues with JQL
JQL (Jira Query Language) is the most powerful way to find issues. The jira search command accepts any valid JQL string:
# Open bugs assigned to you
atlassian-cli jira search \
--jql "assignee = currentUser() AND type = Bug AND status != Done"
# Issues updated in the last 24 hours
atlassian-cli jira search \
--jql "project = DEV AND updated >= -1d" \
--format json
# Unassigned issues in the current sprint
atlassian-cli jira search \
--jql "sprint in openSprints() AND assignee is EMPTY"
Create an issue
Create issues directly from the terminal. Specify the project, issue type, and summary as flags:
# Create a bug
atlassian-cli jira create \
--project DEV \
--issue-type Bug \
--summary "Login page returns 500 on invalid email"
# Create a task
atlassian-cli jira create \
--project DEV \
--issue-type Task \
--summary "Update API documentation for v2 endpoints"
Update and transition issues
Move issues through your workflow and update fields without opening the browser:
# Transition an issue to "In Progress"
atlassian-cli jira transition DEV-123 --transition "In Progress"
# Update the summary
atlassian-cli jira update DEV-123 --summary "Updated: Login page error handling"
# Assign to a team member
atlassian-cli jira assign DEV-123 --assignee user@example.com
View issue details
Get full details on any issue including status, assignee, and description:
# Get issue details
atlassian-cli jira get DEV-123
# JSON output for scripting
atlassian-cli jira get DEV-123 --format json
Projects, fields, and workflows
Inspect your Jira configuration to understand available projects, custom fields, and workflow states:
# List all projects
atlassian-cli jira project list
# List custom fields
atlassian-cli jira fields list
# List workflows and their transitions
atlassian-cli jira workflows list
Advanced: Bulk Operations
Bulk operations are where a Jira CLI tool truly outperforms the web UI. The jira bulk subcommand lets you process hundreds or thousands of issues with a single command.
Bulk transition
Transition all matching issues to a new status. The --dry-run flag previews what will change before you commit:
# Preview: see which issues would be transitioned
atlassian-cli jira bulk transition \
--jql "project = DEV AND status = 'In Progress'" \
--transition "Done" \
--dry-run
# Execute the transition for real
atlassian-cli jira bulk transition \
--jql "project = DEV AND status = 'In Progress'" \
--transition "Done"
Bulk assign and export
# Assign all unassigned issues to a team member
atlassian-cli jira bulk assign \
--jql "project = DEV AND assignee is EMPTY" \
--assignee admin@example.com
# Export all issues to JSON for backup or analysis
atlassian-cli jira bulk export \
--jql "project = DEV" \
--output issues.json \
--format json
Bulk operations run with concurrent execution and built-in rate-limit handling, so they work safely against the Atlassian Cloud API without hitting throttle limits. The dry-run flag ensures you always preview destructive changes before applying them.
CI/CD Integration
The Jira CLI integrates directly into CI/CD pipelines. Set environment variables for authentication and use --format json for machine-readable output.
GitHub Actions example
# .github/workflows/jira-update.yml
name: Update Jira on Deploy
on:
push:
branches: [main]
jobs:
update-jira:
runs-on: ubuntu-latest
steps:
- name: Install atlassian-cli
run: cargo install atlassian-cli
- name: Transition deployed issues
env:
ATLASSIAN_CLI_BASE_URL: ${{ secrets.ATLASSIAN_BASE_URL }}
ATLASSIAN_CLI_EMAIL: ${{ secrets.ATLASSIAN_EMAIL }}
ATLASSIAN_CLI_TOKEN_DEFAULT: ${{ secrets.ATLASSIAN_TOKEN }}
run: |
atlassian-cli jira bulk transition \
--jql "project = DEV AND status = 'Ready for Deploy'" \
--transition "Done" \
--format json
The same pattern works with GitLab CI, Jenkins, or any pipeline runner that can execute shell commands. Machine-readable JSON output lets you parse results and feed them into downstream steps.
FAQ
What is the best Jira CLI tool?
It depends on your needs. For multi-product Atlassian automation (Jira + Confluence + Bitbucket + JSM), atlassian-cli is the best choice -- it covers four products in a single binary with bulk operations and dry-run safety. For a Jira-only TUI experience with an interactive board view, ankitpokhrel/jira-cli is a solid alternative.
Can I use Jira CLI in CI/CD pipelines?
Yes. Set ATLASSIAN_CLI_TOKEN_DEFAULT, ATLASSIAN_CLI_EMAIL, and ATLASSIAN_CLI_BASE_URL as environment variables, and use --format json for machine-readable output. atlassian-cli works with GitHub Actions, GitLab CI, Jenkins, and any pipeline that can run shell commands.
Does Jira CLI support bulk operations?
Yes. atlassian-cli supports bulk transitions, bulk assignments, bulk label updates, and bulk exports via JQL queries. All bulk commands include a --dry-run flag that previews changes before execution, with concurrent processing and rate-limit handling built in.
Is there a free Jira CLI?
Yes. atlassian-cli is free and open source under the MIT license. It supports Jira, Confluence, Bitbucket, and JSM. Install via Homebrew (brew install omar16100/atlassian-cli/atlassian-cli), Cargo, or download pre-built binaries from GitHub Releases.