| name | acli |
| description | Work with Atlassian products (Jira and Confluence) using the Atlassian CLI. Use when the user needs to create, view, edit, search, or manage Jira work items, projects, boards, sprints, filters, or Confluence spaces. Also use for authentication, user management, or automation of Atlassian workflows. |
| license | MIT |
| compatibility | opencode |
| metadata | {"category":"atlassian","tools":"acli"} |
Atlassian CLI (acli)
Use the Atlassian CLI to interact with Jira and Confluence from the command line.
Project-Specific Configuration
InfraGraph Project (IG)
Project Information:
- Project Key:
IG
- Team Field:
customfield_10001
- Default Team Value:
InfraGraph-Graph Engine
Creating Issues:
When creating Jira issues for the InfraGraph project, always include the team field:
acli jira workitem create \
--project IG \
--type Task \
--summary "Task summary" \
--description "Task description" \
--custom "customfield_10001=InfraGraph-Graph Engine"
Linking to Epics:
When creating issues under an epic, use the --parent flag. This automatically inherits the team field from the parent epic:
acli jira workitem create \
--project IG \
--type Task \
--summary "Subtask summary" \
--description "Task description" \
--parent IG-1234
Note: When linking to an epic via --parent, you don't need to explicitly set customfield_10001 as it will be inherited from the parent.
Authentication
Authentication Methods
There are two ways to authenticate with acli:
1. OAuth (Web Browser) - Global Authentication:
acli auth login
acli jira auth login --web
2. API Token - Product-Specific Authentication:
For organizations where OAuth is not enabled, use an API token:
echo "your-api-token" | acli jira auth login --site "mysite.atlassian.net" --email "user@example.com" --token
acli jira auth login --site "mysite.atlassian.net" --email "user@example.com" --token < token.txt
Get-Content token.txt | .\acli.exe jira auth login --site "mysite.atlassian.net" --email "user@example.com" --token
To create an API token:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Give it a name and copy the token
- Use it with the
--token flag as shown above
Note: API token authentication is product-specific (e.g., acli jira auth login), while OAuth can be global (acli auth login).
Check Authentication Status
acli auth status
acli jira auth status
Switch Between Accounts
acli auth switch
acli jira auth switch
Common Workflows
Working with Jira Work Items
Search for work items:
acli jira workitem search --jql "assignee = currentUser() AND status != Done"
acli jira workitem search --jql "project = PROJ AND status = 'In Progress'"
acli jira workitem search --jql "project = PROJ AND created >= -7d" --fields "key,summary,assignee" --csv
acli jira workitem search --jql "project = PROJ" --limit 50 --json
acli jira workitem search --jql "project = PROJ" --paginate
acli jira workitem search --jql "project = PROJ" --count
acli jira workitem search --filter 10001
View work item details:
acli jira workitem view KEY-123
acli jira workitem view KEY-123 --fields "summary,comment"
acli jira workitem view KEY-123 --json
acli jira workitem view KEY-123 --web
Create a work item:
acli jira workitem create --project PROJ --type Task --summary "Fix login bug"
acli jira workitem create --project PROJ --type Task --summary "Implement feature" --description "Detailed description here" --assignee "user@example.com"
acli jira workitem create --project PROJ --type Bug --summary "Fix crash" --assignee "@me" --label "bug,critical"
acli jira workitem create --project PROJ --type Task --summary "Subtask" --parent KEY-100
acli jira workitem create --from-json "workitem.json"
Edit a work item:
acli jira workitem edit --key "KEY-123" --summary "Updated summary"
acli jira workitem edit --key "KEY-1,KEY-2" --assignee "user@example.com"
acli jira workitem edit --jql "project = PROJ" --assignee "user@example.com" --yes
Transition work item status:
acli jira workitem transition --key "KEY-123" --status "In Progress"
acli jira workitem transition --key "KEY-1,KEY-2" --status "Done"
acli jira workitem transition --jql "project = PROJ" --status "In Progress" --yes
Assign work item:
acli jira workitem assign --key "KEY-123" --assignee "user@example.com"
acli jira workitem assign --key "KEY-123" --assignee "@me"
acli jira workitem assign --key "KEY-123" --remove-assignee
Link work items:
acli jira workitem link create --out KEY-123 --in KEY-456 --type Blocks
acli jira workitem link list --key KEY-123
acli jira workitem link type
Clone work item:
acli jira workitem clone --key "KEY-123"
acli jira workitem clone --key "KEY-123" --to-project "OTHER"
acli jira workitem clone --key "KEY-1,KEY-2" --to-project "TEAM"
Delete work item:
acli jira workitem delete --key "KEY-123"
acli jira workitem delete --key "KEY-1,KEY-2" --yes
acli jira workitem delete --jql "project = PROJ AND status = Done" --yes
Comments:
acli jira workitem comment list --key KEY-123
acli jira workitem comment create --key KEY-123 --body "This is a comment"
acli jira workitem comment update --key KEY-123 --comment-id 12345 --body "Updated comment"
acli jira workitem comment delete --key KEY-123 --comment-id 12345
Attachments and watchers:
acli jira workitem attachment list --key KEY-123
acli jira workitem watcher list --key KEY-123
acli jira workitem watcher remove --key KEY-123 --account-id "user-account-id"
Archive/unarchive:
acli jira workitem archive --key "KEY-123"
acli jira workitem unarchive --key "KEY-123"
Managing Jira Projects
List projects:
acli jira project list
acli jira project list --paginate
acli jira project list --recent
acli jira project list --limit 50 --json
View project details:
acli jira project view --key "PROJ"
acli jira project view --key "PROJ" --json
Create project:
acli jira project create --from-project "EXISTING" --key "NEWPROJ" --name "New Project"
acli jira project create --from-project "EXISTING" --key "NEWPROJ" --name "New Project" --description "Project description" --lead-email "lead@example.com"
acli jira project create --from-json "project.json"
acli jira project create --generate-json
Update project:
acli jira project update --project-key "PROJ" --description "Updated description"
acli jira project update --project-key "PROJ" --name "New Name" --key "NEWKEY"
Archive/restore projects:
acli jira project archive --key "PROJ"
acli jira project restore --key "PROJ"
Delete project:
acli jira project delete --key "PROJ"
Boards and Sprints
Search boards:
acli jira board search --project PROJ
acli jira board search --name "My Board"
acli jira board search --type scrum
List sprints for a board:
acli jira board list-sprints --id 123
acli jira board list-sprints --id 123 --state active,closed
Sprint management:
acli jira sprint view --id 456
acli jira sprint list-workitems --sprint 456 --board 123
acli jira sprint create -h
acli jira sprint update -h
acli jira sprint delete -h
Filters
List filters:
acli jira filter list --my
acli jira filter list --favourite
Search filters:
acli jira filter search --name "My Filter"
acli jira filter search --owner "user@example.com"
Add filter to favourites:
acli jira filter add-favourite --filter-id 10001
Other filter commands:
acli jira filter get --id 10001
acli jira filter update -h
acli jira filter change-owner -h
Confluence
Space management:
acli confluence space list
acli confluence space view --key "SPACE"
acli confluence space create -h
acli confluence space update -h
acli confluence space archive --key "SPACE"
acli confluence space restore --key "SPACE"
Authentication (same patterns as Jira):
acli confluence auth login --web
echo "token" | acli confluence auth login --site "mysite.atlassian.net" --email "user@example.com" --token
Administrative Tasks
User management:
acli admin auth login
acli admin user activate -h
acli admin user deactivate -h
acli admin user delete -h
acli admin user cancel-delete -h
Dashboards and Fields
acli jira dashboard search -h
acli jira field create -h
acli jira field delete -h
acli jira field cancel-delete -h
Discovery Pattern
For any command, use the -h or --help flag to discover available options:
acli -h
acli jira -h
acli jira workitem -h
acli jira workitem create -h
Minimizing Output Size (Token Conservation)
acli returns raw Jira REST API v3 responses - it does not strip or transform the payload. This means
descriptions come back as Atlassian Document Format (ADF), a deeply nested JSON structure that can be
hundreds of lines for a single field. Always filter output aggressively to avoid wasting tokens.
Use --fields to request only what you need
Both workitem view and workitem search support --fields to limit returned fields:
acli jira workitem view KEY-123 --fields "summary,status"
acli jira workitem view KEY-123 --fields "-description"
acli jira workitem search --jql "project = PROJ" --fields "key,summary,assignee"
Default fields for view: key,issuetype,summary,status,assignee,description
Default fields for search: issuetype,key,assignee,priority,status,summary
If you don't need the description, explicitly exclude it - it's the single biggest source of bloat
due to ADF encoding.
Use --json with jq for surgical extraction
When you need structured data from verbose responses, pipe through jq:
acli jira workitem view KEY-123 --json | jq '{key: .key, summary: .fields.summary, status: .fields.status.name}'
acli jira workitem view KEY-123 --fields "comment" --json | jq '[.fields.comment.comments[] | {author: .author.displayName, body: .body}]'
acli jira workitem search --jql "assignee = currentUser()" --json | jq '[.[] | {key: .key, summary: .fields.summary, status: .fields.status.name}]'
Use --csv for tabular summaries
For search results you just need to scan, --csv is far more compact than JSON or default output:
acli jira workitem search --jql "project = PROJ AND status != Done" --fields "key,summary,status,assignee" --csv
Use --count when you only need a number
acli jira workitem search --jql "project = PROJ AND sprint in openSprints()" --count
Prefer search over view for bulk lookups
Rather than calling workitem view in a loop (each returning the full payload), use a single
workitem search with a JQL key in (KEY-1, KEY-2, KEY-3) query and --fields to get exactly
what you need in one call.
ADF description handling
Jira descriptions are stored in Atlassian Document Format - a deeply nested JSON tree, not plain
text or markdown. When the user asks about a work item's description, either:
- Exclude it with
--fields "-description" and tell the user to check the web UI, or
- Fetch it and extract the text content nodes from the ADF with jq, e.g.:
acli jira workitem view KEY-123 --fields "description" --json | jq '[recurse(.content[]?) | select(.type == "text") | .text] | join("")'
Status categories
Jira statuses (e.g. "In Review", "Code Review") map to three built-in status categories:
To Do, In Progress, and Done. When filtering by status in JQL, use the exact status
name (e.g. status = "In Review"), or use statusCategory for broader matching
(e.g. statusCategory = "In Progress" catches all active statuses).
Best Practices
- Filter output aggressively - Always use
--fields, --json | jq, or --csv to minimize token usage
- Use JQL for searches - JQL (Jira Query Language) provides powerful search capabilities
- Discover options with --help - Commands have many flags and options; always check help when unsure
- Use output format flags - Most commands support
--json and --csv for structured output
- Use --paginate for large result sets - Avoids missing results due to default limits
- Present clean output - Parse command output to present relevant information to the user
- Verify permissions - Some operations require specific Jira/Confluence permissions
Error Handling
If commands fail with authentication errors:
- Check authentication status with
acli auth status or acli jira auth status
- Authenticate using the appropriate method:
- For OAuth:
acli auth login or acli jira auth login --web
- For API token:
acli jira auth login --site "site" --email "email" --token
- If OAuth is not available in the organization, use API token authentication
For other errors:
- Permission errors: Explain that the user may not have necessary permissions
- Not found errors: Verify work item keys, project keys, or IDs are correct
Additional Features
- Rovo Dev: AI coding agent (beta) -
acli rovodev -h
- Feedback: Submit feedback or report issues -
acli feedback
- Configuration: Change settings -
acli config -h
Notes
- acli works with Atlassian Cloud products
- Most list/search commands support
--json and --csv output flags
- Work items were formerly called "issues" in Jira
- Some commands may require specific subscription levels or permissions
- Global OAuth (
acli auth login) may not be available in all organizations
- Product-specific authentication (
acli jira auth login) supports both OAuth and API tokens
- Bulk operations on multiple work items use
--key "KEY-1,KEY-2" or --jql or --filter flags
- Use
--yes flag to skip confirmation prompts for destructive/bulk operations