Command Reference
Every atlassian-cli command grouped by product. Examples use the default profile; add --profile <name> to target a different one. See Authentication to configure profiles.
Global flags
All commands accept these:
--profile <name>: use a specific auth profile (default: the one marked default inauth list)--format <table|json|csv|yaml|quiet|markdown>or-f: output format (default:table)--envelope: wrap JSON/YAML list output in{"data": [...], "count": N}for easier downstream parsing--config <path>: use a non-default config file instead of~/.atlassian-cli/config.yaml--debug: log HTTP request/response details for troubleshooting--help: print command help
Bulk subcommands additionally accept --dry-run, --concurrency <n>, and --limit <n>.
Output formats
# Human-readable table (default)
atlassian-cli jira issue search --jql "project = DEV"
# Machine-readable JSON: pipe to jq, feed other tools
atlassian-cli jira issue search --jql "project = DEV" --format json | jq '.[].key'
# CSV: open in a spreadsheet
atlassian-cli jira issue search --jql "project = DEV" --format csv > issues.csv
# YAML: good for configuration diffs
atlassian-cli jira workflows export "Software Simplified Workflow" --format yaml
# Quiet: exit code only; useful in CI gating
atlassian-cli auth test --profile prod --format quiet && echo OK
auth
See Authentication & Profiles for the full guide. Available subcommands: login, logout, list, status, whoami, test.
atlassian-cli auth login --profile work --base-url https://x.atlassian.net --email you@x.com --token $TOKEN --default
atlassian-cli auth list
atlassian-cli auth status
atlassian-cli auth whoami --profile work
atlassian-cli auth test --profile work
atlassian-cli auth logout --profile old # remove credentials, keep profile
atlassian-cli auth logout --profile old --remove-profile # remove profile entirely
atlassian-cli auth logout --profile old --bitbucket # only remove Bitbucket token
To change which profile is default, re-run
auth login --default for the profile you want as default, or edit default_profile: in ~/.atlassian-cli/config.yaml directly.Jira: Issues
atlassian-cli jira issue search --jql "project = DEV order by created desc" --limit 5
atlassian-cli jira issue get DEV-123
atlassian-cli jira issue create --project DEV --issue-type Task --summary "Test task"
# Custom fields: discover IDs via `jira fields list`
atlassian-cli jira issue create --project DEV --issue-type Task --summary "cf test" \
--field 'customfield_10010={"value":"Internal"}' \
--field 'customfield_10020={"formula":"a=b"}'
atlassian-cli jira issue update DEV-123 --summary "Updated summary"
atlassian-cli jira issue transition DEV-123 --transition "In Progress"
atlassian-cli jira issue assign DEV-123 --assignee user@example.com
atlassian-cli jira issue delete DEV-123
# Assign to a sprint by numeric sprint id (Agile API; no customfield id needed)
atlassian-cli jira issue update DEV-123 --sprint 25446
atlassian-cli jira issue create --project DEV --issue-type Task --summary "In sprint" --sprint 25446
Jira: Projects
atlassian-cli jira project list
atlassian-cli jira project get DEV
atlassian-cli jira components list DEV
atlassian-cli jira versions list DEV
Jira: Roles
atlassian-cli jira roles list DEV
atlassian-cli jira roles get DEV 10002
atlassian-cli jira roles actors DEV 10002
atlassian-cli jira roles add-actor DEV 10002 --user user@example.com
atlassian-cli jira roles remove-actor DEV 10002 --user user@example.com
Jira: Fields & workflows
atlassian-cli jira fields list
atlassian-cli jira workflows list
atlassian-cli jira workflows export "Software Simplified Workflow"
Jira: Bulk operations
# Dry-run first, always
atlassian-cli jira bulk transition \
--jql "project = DEV AND status = Open" \
--transition "In Progress" \
--dry-run
atlassian-cli jira bulk assign \
--jql "project = DEV AND assignee is EMPTY" \
--assignee admin@example.com
atlassian-cli jira bulk export \
--jql "project = DEV" \
--output issues.json --format json
All bulk commands respect
--concurrency (default 4) and show a live progress bar unless --format quiet is set.Jira: Transitions
# What can this issue move to right now?
atlassian-cli jira issue transitions DEV-123
# Ids only, to feed straight into a transition
atlassian-cli jira issue transitions DEV-123 --format quiet
Which transitions exist depends on the workflow and the issue's current status, so this is the only reliable way to discover the name or id to pass to
jira issue transition. Added in 0.6.0.Jira: Attachments
atlassian-cli jira attachment list DEV-123
atlassian-cli jira attachment get 10001
# Saves as the server-side filename, in the current directory
atlassian-cli jira attachment download 10001
atlassian-cli jira attachment download 10001 --output ./logo.png
# Stream to stdout for piping; the byte stream is left untouched
atlassian-cli jira attachment download 10001 --output - | file -
# Every attachment on an issue, in one call
atlassian-cli jira attachment download --issue DEV-123 --dir ./attachments
atlassian-cli jira attachment upload DEV-123 --file ./report.pdf
atlassian-cli jira attachment delete 10001 --force
Download refuses to overwrite an existing file without
--force. Server-supplied filenames are reduced to a single path segment, so a hostile filename cannot escape --dir. Added in 0.5.0.Jira: Raw API access
atlassian-cli jira api /rest/api/3/myself
# --query handles percent-encoding, so JQL can be written plainly
atlassian-cli jira api /rest/api/3/search/jql \
--query 'jql=project = DEV AND status = Open' \
--query maxResults=5
atlassian-cli jira api /rest/api/3/issue/DEV-123 -X PUT \
-d '{"fields":{"summary":"New summary"}}'
# A body can come from a file or stdin
atlassian-cli jira api /rest/api/3/issue -d @payload.json
# Preview without sending; DELETE also requires --force
atlassian-cli jira api /rest/api/3/issue/DEV-123 -X DELETE --dry-run
Any Jira REST endpoint, using the credentials already stored in your profile. A non-2xx response still prints the API's own error body, then exits 1. Paths must resolve to your own site, and cross-origin redirects are returned rather than followed, so use
jira attachment download for attachment bytes. Added in 0.5.0.Jira: Automation & webhooks
atlassian-cli jira automation list
atlassian-cli jira webhooks list
atlassian-cli jira audit list --from 2025-01-01 --limit 100
Confluence: Search
atlassian-cli confluence search cql "space = DEV and type = page" --limit 5
atlassian-cli confluence search text "meeting notes" --limit 10
atlassian-cli confluence search in-space DEV "api docs"
Confluence: Spaces
atlassian-cli confluence space list --limit 10
atlassian-cli confluence space get DEV
atlassian-cli confluence space create --key DOCS --name "Documentation" --description "Team docs"
atlassian-cli confluence space update DEV --name "Development Space"
atlassian-cli confluence space delete OLD --force
atlassian-cli confluence space permissions DEV
atlassian-cli confluence space add-permission --permission read --subject-type user --subject-id user@example.com DEV
Confluence: Pages
atlassian-cli confluence page list --space DEV --limit 25
atlassian-cli confluence page get 12345
atlassian-cli confluence page create --space DEV --title "New Page" --body "<p>Content</p>"
atlassian-cli confluence page update 12345 --title "Updated Title"
atlassian-cli confluence page delete 12345
atlassian-cli confluence page versions 12345
atlassian-cli confluence page add-label 12345 documentation
atlassian-cli confluence page remove-label 12345 outdated
atlassian-cli confluence page comments 12345
atlassian-cli confluence page comments 12345 --full
atlassian-cli confluence page comments 12345 --replies
atlassian-cli confluence page add-comment 12345 "Great work!"
atlassian-cli confluence page add-comment 12345 "Agreed" --parent 98765
atlassian-cli confluence page add-comment 12345 "Agreed" --parent 98765 --kind inline
atlassian-cli confluence page get-restrictions 12345
atlassian-cli confluence page add-restriction --operation update --subject-type user --subject-id user@example.com 12345
atlassian-cli confluence page remove-restriction --operation update --subject-type user --subject-id user@example.com 12345
Confluence keeps footer comments and inline ones (the highlight-and-comment kind attached to selected text) in separate collections. Both are listed since 0.7.0, with a
kind column saying which each is; before that only footer comments were fetched, so a page using inline comments looked empty. --replies walks each thread and fills in a parent column, at one request per thread root. When replying, --kind must match the thread: Confluence will not accept a footer reply to an inline one.Confluence: Blog posts
atlassian-cli confluence blog list --space DEV --limit 10
atlassian-cli confluence blog get 67890
atlassian-cli confluence blog create --space DEV --title "Sprint Recap" --body "<p>Summary</p>"
atlassian-cli confluence blog update 67890 --title "Updated Recap"
atlassian-cli confluence blog delete 67890
Confluence: Folders new in 0.4
atlassian-cli confluence folder get 3309240341
atlassian-cli confluence folder create --space DOCS --title "Architecture" --parent 3302031761
atlassian-cli confluence folder delete 3309240341 --force
Confluence: Attachments
atlassian-cli confluence attachment list 12345
atlassian-cli confluence attachment get 11111
atlassian-cli confluence attachment upload --file ./diagram.png 12345
atlassian-cli confluence attachment download --output ./download.png 11111
atlassian-cli confluence attachment delete 11111
Confluence: Bulk operations
atlassian-cli confluence bulk delete --cql "space = OLD" --dry-run
atlassian-cli confluence bulk add-labels --cql "space = DEV" --labels docs,reviewed --dry-run
atlassian-cli confluence bulk export --cql "space = DEV" --output backup.json --format json
For a full markdown-to-Confluence pipeline see the Markdown sync runbook.
Confluence: Analytics
atlassian-cli confluence analytics page-views 12345 --from 2025-01-01
atlassian-cli confluence analytics space-stats DEV
Bitbucket: User info
bb is an alias for bitbucket. Both work in every command below.atlassian-cli bitbucket whoami
atlassian-cli bb whoami
Bitbucket: Repositories
atlassian-cli bitbucket --workspace myteam repo list --limit 10
atlassian-cli bitbucket --workspace myteam repo get api-service
atlassian-cli bitbucket --workspace myteam repo create newrepo --name "New Repo" --private
atlassian-cli bitbucket --workspace myteam repo update api-service --description "Updated description"
atlassian-cli bitbucket --workspace myteam repo delete oldrepo --force
Bitbucket: Branches
atlassian-cli bitbucket --workspace myteam branch list api-service
atlassian-cli bitbucket --workspace myteam branch create api-service feature/new --from main
atlassian-cli bitbucket --workspace myteam branch delete api-service feature/old --force
atlassian-cli bitbucket --workspace myteam branch protect api-service --pattern "main" --kind restrict_merges --approvals 2
atlassian-cli bitbucket --workspace myteam branch restrictions api-service
Bitbucket: Pull requests
atlassian-cli bitbucket --workspace myteam pr list api-service --state OPEN --limit 5
atlassian-cli bitbucket --workspace myteam pr get api-service 123
atlassian-cli bitbucket --workspace myteam pr create api-service --title "Add feature" --source feature/new --destination main
atlassian-cli bitbucket --workspace myteam pr update api-service 123 --title "Updated title"
atlassian-cli bitbucket --workspace myteam pr approve api-service 123
atlassian-cli bitbucket --workspace myteam pr merge api-service 123 --strategy merge_commit
atlassian-cli bitbucket --workspace myteam pr comments api-service 123
atlassian-cli bitbucket --workspace myteam pr comment api-service 123 --text "Looks good!"
# Anchor a comment to a file, and optionally a line on either side of the diff
atlassian-cli bitbucket --workspace myteam pr comment api-service 123 \
--text "Nit: rename" --path src/main.rs --line 42
atlassian-cli bitbucket --workspace myteam pr comment api-service 123 \
--text "Why remove this?" --path src/main.rs --line 17 --side old
atlassian-cli bitbucket --workspace myteam pr comment api-service 123 \
--text "See README" --path README.md
# Reply inside a thread, and resolve or reopen one
atlassian-cli bitbucket --workspace myteam pr comment api-service 123 \
--text "Fixed in the next commit" --parent 843649259
atlassian-cli bitbucket --workspace myteam pr resolve-comment api-service 123 843649259
atlassian-cli bitbucket --workspace myteam pr reopen-comment api-service 123 843649259
Threaded replies, resolve and reopen were added in 0.6.0; inline anchoring in 0.7.0. The two compose, so a comment can be a reply, inline, both or neither.
pr comments shows each comment's parent, its full body rather than the first line, and a location column reading path:line for inline comments.Bitbucket: Workspaces & projects
atlassian-cli bitbucket workspace list --limit 10
atlassian-cli bitbucket workspace get myteam
atlassian-cli bitbucket --workspace myteam project list
atlassian-cli bitbucket --workspace myteam project create PROJ --name "My Project" --private
atlassian-cli bitbucket --workspace myteam project delete PROJ --force
Bitbucket: Pipelines
atlassian-cli bitbucket --workspace myteam pipeline list --repo api-service
atlassian-cli bitbucket --workspace myteam pipeline trigger --repo api-service --ref-name main
# Trigger a named custom pipeline from bitbucket-pipelines.yml (new in 0.4)
atlassian-cli bitbucket --workspace myteam pipeline trigger --repo api-service --ref-name main --custom-pipeline s3-access-test
atlassian-cli bitbucket --workspace myteam pipeline stop {uuid} --repo api-service
Bitbucket: Webhooks & SSH keys
atlassian-cli bitbucket --workspace myteam webhook list api-service
atlassian-cli bitbucket --workspace myteam webhook create api-service --url https://example.com/hook --events repo:push
atlassian-cli bitbucket --workspace myteam ssh-key list api-service
atlassian-cli bitbucket --workspace myteam ssh-key add api-service --label deploy --key "ssh-rsa ..."
Bitbucket: Permissions & commits
atlassian-cli bitbucket --workspace myteam permission list api-service
atlassian-cli bitbucket --workspace myteam permission grant api-service --user-uuid {uuid} --permission write
atlassian-cli bitbucket --workspace myteam commit list api-service --branch main
atlassian-cli bitbucket --workspace myteam commit diff api-service abc123
atlassian-cli bitbucket --workspace myteam commit browse api-service --commit main --path src/
Bitbucket: Bulk operations
atlassian-cli bitbucket --workspace myteam bulk archive-repos --days 180 --dry-run
atlassian-cli bitbucket --workspace myteam bulk delete-branches api-service --exclude feature/keep --dry-run
JSM: Service desks
atlassian-cli jsm service-desk list --limit 25
atlassian-cli jsm service-desk get 10
atlassian-cli jsm service-desk customers 10 --limit 25
atlassian-cli jsm service-desk add-customer 10 --account-id 5f...1a --account-id 6a...2b
atlassian-cli jsm service-desk remove-customer 10 --account-id 5f...1a
atlassian-cli jsm service-desk organizations 10
atlassian-cli jsm service-desk add-organization 10 --org-id 42
atlassian-cli jsm service-desk remove-organization 10 --org-id 42
JSM: Request types
atlassian-cli jsm request-type list --servicedesk-id 10 --limit 25
atlassian-cli jsm request-type get 10 7
atlassian-cli jsm request-type fields 10 7
atlassian-cli jsm request-type groups 10
JSM: Requests
atlassian-cli jsm request list --servicedesk-id 10 --limit 25
atlassian-cli jsm request get SD-123
atlassian-cli jsm request create --servicedesk-id 10 --request-type-id 7 --summary "Access issue" --description "Can't log in"
atlassian-cli jsm request transitions SD-123
atlassian-cli jsm request transition SD-123 --transition "In Progress"
atlassian-cli jsm request status SD-123
atlassian-cli jsm request comments SD-123 --limit 25
atlassian-cli jsm request add-comment SD-123 --body "Investigating" --public
atlassian-cli jsm request participants SD-123
atlassian-cli jsm request add-participant SD-123 --account-id 5f...1a
atlassian-cli jsm request remove-participant SD-123 --account-id 5f...1a
atlassian-cli jsm request subscribe SD-123
atlassian-cli jsm request unsubscribe SD-123
JSM: Queues
atlassian-cli jsm queue list 10
atlassian-cli jsm queue get 10 5
atlassian-cli jsm queue issues 10 5 --limit 25
JSM: Approvals
atlassian-cli jsm approval list SD-123
atlassian-cli jsm approval get SD-123 --approval-id 1
atlassian-cli jsm approval approve SD-123 --approval-id 1
atlassian-cli jsm approval decline SD-123 --approval-id 1
JSM: SLAs
atlassian-cli jsm sla list SD-123
atlassian-cli jsm sla get SD-123 --sla-id time-to-resolution
JSM: Customers
atlassian-cli jsm customer create --email new@customer.com --display-name "New Customer"
atlassian-cli jsm customer revoke-portal-access --account-id 5f...1a
JSM: Organizations
atlassian-cli jsm organization list --limit 25
atlassian-cli jsm organization get 42
atlassian-cli jsm organization create --name "ACME Ops"
atlassian-cli jsm organization users 42 --limit 25
atlassian-cli jsm organization add-user 42 --account-id 5f...1a
atlassian-cli jsm organization remove-user 42 --account-id 5f...1a
atlassian-cli jsm organization delete 42
JSM: Knowledge base
atlassian-cli jsm kb search --query "vpn" --servicedesk-id 10 --limit 25
JSM: Feedback
atlassian-cli jsm feedback get SD-123
atlassian-cli jsm feedback submit SD-123 --rating 5 --comment "Great help"
atlassian-cli jsm feedback delete SD-123
Next: see the runbooks for production examples, or head to the blog for deep-dives.