atlassian-cli is an independent, community open-source project, not affiliated with, endorsed by, or sponsored by Atlassian, and is not Atlassian's official CLI (acli). Product names are used only to identify compatibility.

Two Kinds of Jira Automation

When people say Jira automation, they usually mean one thing: the built-in rules engine, Automation for Jira, where you assemble a trigger, some conditions, and actions in a visual editor. That engine is genuinely good, and for a large share of everyday work it is the right answer. But it is only half the picture.

There is a second model: scripted automation that runs outside Jira and drives its REST and Agile APIs from your own terminal, a cron job, or a CI pipeline. This post is a decision guide, not a recipe list. The short version: use the rules engine for reactive, event-driven logic that must fire the moment something changes inside Jira, and reach for a CLI or script when the work is a batch, spans several tools, needs to run on a schedule, or should live in version control. Most mature teams run both.

A note on tooling before we go further. atlassian-cli is an independent, community open-source project. It is not Atlassian's official CLI (acli) and is not affiliated with Atlassian. Use the official acli if you want first-party vendor support; use atlassian-cli if you want a single free Rust binary spanning Jira, Confluence, Bitbucket, and JSM. Neither one is the rules engine. Both drive the same public APIs from the outside.

Where the Rules Engine Wins

The rules engine's core strength is that it lives inside Jira and reacts to events in real time. When an issue is created, transitioned, commented on, or edited, a rule can respond within the same request cycle. Nothing you run from the outside can match that latency, because there is no polling gap: the trigger is the event itself.

It shines for logic like:

If a non-developer owns the workflow and the logic is "when X happens inside this project, do Y," the rules engine is almost always the correct and cheapest tool. Do not script something the visual editor already does well.

Where the Rules Engine Hits a Wall

The same design that makes the rules engine great at reacting to single events makes it awkward for other jobs. Three limits show up repeatedly:

It is event-driven, so backfills are painful. Rules fire when something changes. If you need to apply a one-time change across ten thousand existing issues, there is no natural trigger. Teams end up faking one by bulk-editing issues just to make rules fire, which is fragile and hard to reason about.

Execution is metered and bounded. Automation runs against per-plan execution limits, and heavy rules can consume budget quickly. A giant historical sweep is exactly the kind of work that bumps into those ceilings.

Logic lives in a setting, not in version control. A rule is configuration inside a project. You cannot easily diff it, code-review a change, or roll it back the way you would a file in git. For teams that treat infrastructure as code, that opacity is a real cost. Auditing "what automation do we even have?" across many projects is tedious in the UI.

None of this makes the rules engine bad. It means the rules engine is the wrong shape for batch work, versioned logic, and anything that has to reach beyond Jira.

What CLI-Driven Automation Adds

Running automation from a command line flips every one of those constraints. Because the logic lives in a script you own, it is text you can commit, diff, and review. Because it runs outside Jira, it can talk to other systems in the same breath, and it treats a batch of ten thousand issues as a normal Tuesday.

The properties that matter:

Crucially, a CLI does not compete with the rules engine on latency. It is not trying to react to a single event in milliseconds. It is for the jobs the rules engine was never meant to do.

Rules Engine vs. CLI Script

Here is the tradeoff at a glance. Read it as "which shape fits the job," not "which is better."

Dimension Rules engine (Automation for Jira) Scripted CLI automation
Trigger model Real-time, event-driven inside Jira You invoke it: manual, cron, or CI
Best for Reactive single-issue logic Batches, reports, scheduled jobs
Backfills Awkward, no natural trigger Native, one JQL query
Version control Config in a project setting A file you diff and review
Reaches other tools Limited to configured integrations Any tool in the same shell pipeline
Who owns it Project admins, no code needed Anyone comfortable in a terminal
Latency Instant on the triggering event Whenever the job runs

What CLI Automation Looks Like

To make the second model concrete, here are the building blocks with real atlassian-cli commands. These are illustrative primitives, not a copy-paste playbook; the sibling posts below collect worked examples.

First, audit the automation you already have. The CLI can list existing rules and webhooks so you can inventory reactive logic before you decide what to script:

# See the rules and webhooks that already run inside Jira
atlassian-cli jira automation list
atlassian-cli jira webhooks list

Next, the batch job that the rules engine struggles with. Every bulk command previews with --dry-run before it changes anything, so you always see the blast radius first:

# Backfill a status change across a large historical set
atlassian-cli jira bulk transition \
  --jql "project = DEV AND status = 'In Review' AND updated < -90d" \
  --transition "Done" \
  --dry-run

Then a scheduled reporting job. Because output is machine-readable, the automation is just a pipeline into jq:

# Count open bugs by priority for a weekly digest
atlassian-cli jira issue search \
  --jql "project = DEV AND type = Bug AND statusCategory != Done" \
  --format json | jq 'group_by(.fields.priority.name)
    | map({priority: .[0].fields.priority.name, count: length})'

And a CI gate, using the quiet format so the exit code is the whole signal:

# Fail a pipeline stage if credentials are not valid
atlassian-cli auth test --profile prod --format quiet && echo "Jira reachable"

Finally, the compliance angle the rules engine cannot give you directly: an exportable trail of who changed what. The audit and --envelope flags make the data downstream-friendly:

# Pull the audit log for review, wrapped for easy parsing
atlassian-cli jira audit list --from 2026-01-01 --limit 200 \
  --format json --envelope

Every one of these lives in a file you can commit. If you want a hardened version of the batch pattern with confirmation prompts and error handling, see the sprint report runbook, and the full flag list is in the command reference.

Using Both Together

The best setups do not choose. They split responsibilities along the grain of each tool. A simple rule of thumb:

Let the rules engine own reactions

Anything that must respond to a live event stays in Automation for Jira: assignment on create, transition on subtask completion, notifications on status change. It is instant and any project admin can maintain it.

Let scripts own batches and schedules

Nightly cleanups, weekly reports, quarterly backfills, and cross-tool sync belong in a CLI script run by cron or CI. These are versioned, reviewable, and unbounded by rule execution budgets.

Let the CLI keep the rules engine honest

Use jira automation list and jira audit list to inventory and audit your reactive rules from the outside, so the automation you cannot easily diff in the UI still shows up in a report you can.

Framed this way, the CLI is not a rival to the rules engine. It is the layer that covers the batch, scheduled, and auditable work the rules engine was never built for, while the rules engine keeps doing the instant, in-product reactions it does best. For deeper end-to-end walkthroughs, the complete Jira CLI guide and the Jira CLI reference cover the full command surface, and bulk Jira operations goes deep on the batch side specifically.

FAQ

Should I use Jira's automation rules or a script?

Use the built-in rules engine for things that must happen the instant an event fires inside Jira: auto-assigning a new bug, transitioning a parent when subtasks close, posting a comment on status change. Reach for scripted CLI automation when the work is a batch, spans multiple tools, needs to run on a schedule, or should live in version control and code review. Most teams end up using both, with the rules engine handling reactive event logic and scripts handling scheduled or ad hoc jobs.

Can Jira automation rules do bulk backfills?

The rules engine is event-driven, so it is a poor fit for one-off backfills across thousands of existing issues. It also has per-rule and per-plan execution limits. For a large historical change, a CLI batch is a better tool: atlassian-cli jira bulk transition takes a JQL query, supports a --dry-run preview, and processes issues with controlled concurrency and rate-limit backoff, so you can run the whole set once and walk away.

What can a CLI do that Automation for Jira can't?

A CLI runs outside Jira, so it can pipe issue data to jq, commit scripts to git, run inside CI next to your build, and coordinate Jira with other systems in the same script. It also makes automation reviewable and versioned: the logic is text you can diff, not a rule buried in a project setting. atlassian-cli exposes JSON and CSV output and a quiet mode for CI gating that the in-app rules editor does not.

Is atlassian-cli the same as Jira's automation engine?

No. Automation for Jira is Atlassian's built-in no-code rules engine that runs inside the product. atlassian-cli is an independent, community open-source binary you run from your own terminal or pipeline. It does not replace the rules engine and cannot register in-app triggers; it drives the same REST and Agile APIs from the outside, and can even list your existing rules with jira automation list so you can audit them alongside scripted jobs.

Try atlassian-cli

One free, MIT-licensed Rust binary for scripted Jira, Confluence, Bitbucket, and JSM automation. No account required to install.

Install Now

Related Resources