| name | jira |
| description | Work with Jira issues using the jira CLI. Use for listing, creating, viewing, editing, deleting, cloning, and linking Jira issues. Supports CRUD operations, custom fields, JQL queries, epics, sprints, and common workflows like finding your assigned issues, filtering by status, and bulk operations. |
| allowed-tools | Bash(jira issue list *), Bash(jira issue view *), Bash(jira sprint list *), Bash(jira epic list *), Bash(jira me) |
Jira CLI
Work with Jira issues efficiently using the jira CLI.
Quick Start
List your assigned issues:
jira issue list -a$(jira me) --plain
Core Workflows
List Issues
Find issues with various filters:
jira issue list -a$(jira me) -s~Resolved --plain
jira issue list -tBug -yHigh
jira issue list --created week
jira issue list -lbackend -lcritical
jira issue list -q"project = PROJ AND sprint in openSprints()"
Create Issue
Create new issues with required and optional fields:
jira issue create
jira issue create -tBug -s"Login fails on mobile" -yHigh -b"Users report..."
jira issue create -tStory -s"Add dark mode" -lux -lfrontend -CFrontend
jira issue create -tTask -PEPIC-123 -s"Implement feature X"
jira issue create -tStory -PEPIC-123 -s"User can do Y"
jira issue create -t"Sub-task" -PISSUE-123 -s"Write tests"
Using Files for Descriptions
Prefer writing descriptions to a file and piping via stdin over inline -b strings, especially for multi-line or complex content. Piping works consistently for both create and edit.
echo "Description content here" > /tmp/desc.md
cat /tmp/desc.md | jira issue create -tStory -s"Title" --no-input
cat /tmp/desc.md | jira issue edit ISSUE-1 --no-input
This is recommended because:
- The user can inspect and tweak the file before you run the command
- Avoids shell quoting issues with special characters in
-b
- Easier to debug when formatting doesn't render as expected in Jira
View Issue
Display issue details:
jira issue view ISSUE-1
jira issue view ISSUE-1 --plain
jira issue view ISSUE-1 --comments 5
jira issue view ISSUE-1 --raw
Edit Issue
Update existing issues:
jira issue edit ISSUE-1
jira issue edit ISSUE-1 -yHigh -s"Updated title"
jira issue edit ISSUE-1 -lurgent -l-wontfix
jira issue edit ISSUE-1 -ajohn.doe@company.com
Custom Fields
Work with custom fields (see references/custom-fields.md for details):
jira issue create -tStory -s"Title" --custom story-points=5
jira issue edit ISSUE-1 --custom severity=Critical --custom "found in version"="2.1.0"
Other Operations
Transitions
jira issue move ISSUE-1
jira issue move ISSUE-1 "In Progress"
Comments
jira issue comment add ISSUE-1 "This is my comment"
jira issue comment list ISSUE-1
Assignment
jira issue assign ISSUE-1 jane.doe@company.com
jira issue assign ISSUE-1 $(jira me)
jira issue assign ISSUE-1 x
Clone Issue
Clone an existing issue, optionally overriding fields:
jira issue clone ISSUE-1
jira issue clone ISSUE-1 -s"Cloned summary" -yHigh -a$(jira me)
jira issue clone ISSUE-1 -H"old text:new text"
Link Issues
Connect related issues or add web links:
jira issue link ISSUE-1 ISSUE-2
jira issue link ISSUE-1 ISSUE-2 Blocks
jira issue link remote ISSUE-1 https://example.com "Link title"
Delete
jira issue delete ISSUE-1
echo "y" | jira issue delete ISSUE-1
echo "y" | jira issue delete ISSUE-1 --cascade
Epics
jira epic list EPIC-1
jira epic create -n"Epic Name" -s"Epic summary"
jira epic add EPIC-1 ISSUE-1 ISSUE-2 ISSUE-3
jira epic remove ISSUE-1 ISSUE-2
Sprints
jira sprint list
jira sprint list SPRINT_ID
jira sprint list --current
jira sprint list --prev
jira sprint list --next
jira sprint add SPRINT_ID ISSUE-1 ISSUE-2
Output Formats
Control output format based on use case:
jira issue list
jira issue list --plain
jira issue list --plain --columns KEY,SUMMARY,STATUS,ASSIGNEE
jira issue list --csv > issues.csv
jira issue list --raw
Useful Patterns
Filter Combinations
jira issue list -a$(jira me) -s"In Progress" --plain
jira issue list -tBug -yHigh -ax --plain
jira issue list --updated -2d
jira issue list -s~Resolved -s~Closed
Bulk Operations
jira issue list -a$(jira me) --raw | jq -r '.issues[].key' | while read key; do
echo "Processing $key"
jira issue edit "$key" -lprocessed --no-input
done
Known Issues
Formatting Problems in Descriptions and Comments
The jira CLI has several open bugs around text formatting:
- Markdown conversion inconsistency:
jira issue create -b converts GitHub-flavored markdown to Jira format, but jira issue edit -b may not (#935, #549). Behavior varies between Jira Cloud and on-prem.
- Backslash escaping: Special characters like dashes, underscores, and parentheses can get backslash-escaped in comments and descriptions, corrupting content (#843). E.g.,
ISSUE-123 may render as ISSUE\-123.
- No checkbox/Action Item support: Jira Cloud's Action Items require ADF
taskList nodes via the v3 REST API. The CLI's markdown conversion doesn't produce these, so - [ ] / - [x] won't render as checkboxes. Avoid using checkboxes in descriptions and comments; use plain bullet lists instead.
Mitigation: Pipe descriptions from a file (cat desc.md | jira issue ...) instead of inline -b strings. This lets you inspect the content before submission and makes it easier to iterate if formatting is off. If problems persist, check the rendered output in Jira and adjust the source file.
Tips
- Prefer piping from a file (
cat desc.md | jira issue ...) over -b"inline" for descriptions — easier to review, debug, and edit
- Use
$(jira me) to reference current user
- Use
~ prefix to exclude values (e.g., -s~Done)
- Use
x as assignee to indicate "unassigned"
- Use
-P to attach issues to epics or create sub-tasks
- Add
--plain for scriptable output
- Add
--no-input to skip interactive prompts — but not all commands support it. Notable exceptions:
jira issue delete — pipe echo "y" for confirmation instead
jira issue link remote — runs non-interactively by default, no flag needed
- Check exit codes for automation ($? = 0 for success)