An AI Coding Agent in Jira That Asks Before It Commits

20 minCogniRunnerWatch on YouTube

Recorded on Jira Cloud Premium (company-managed) with CogniRunner 1.36.3. Screens as they looked on 3 November 2026.

Elzi's new boss is the guard dog from the last episode, and he locks her in a crate. First he builds his Jira workflow rules. A post function from a recipe puts a label on a ticket, and a condition hides In Review until the acceptance criteria are filled in. For a step no recipe covers, the AI writes the post function once from plain words, and from then on it runs with no AI.

Then he opens CogniRunner's Coder on a ticket, sets it to commit without asking and lets it commit to a new branch without reading a line. It writes Elzi's name into the code, and that sets her free. On Standard, with Atlassian's AI, the Coder is off, so she brings her own AI key, tests it and picks the models. She writes a house rule as a skill, makes the Coder ask first and reads the diff before she opens the pull request in Bitbucket. At the end, a rule has the Coder review every pull request when its ticket reaches In Review.

The checklist for setting it up is on this page. We recorded between 1 and 3 November 2026 on Jira Cloud Premium, in a company-managed space, with CogniRunner 1.35.26 to 1.36.3 (Standard edition). Atlassian's own Jira Coding Agent (Rovo) is a different product. It opens draft pull requests from Jira automation with Rovo credits.

Copy the config

What the episode uses. Swap in your own keys and names before you paste. The time link plays the moment it is used.

Run CogniRunner's Coder on your own AI key: a checklist

ChecklistUsed at 19:46

text
1Run CogniRunner's Coder on your own AI account, and hand it a Jira transition (Jira Cloud, CogniRunner 1.35.26 to 1.36.3; a Jira admin sets it up)
2
31. Provider: CogniRunner admin page > Settings > Provider and key. Pick one of the nine providers you pay yourself
4   (OpenAI, Anthropic, Google Gemini, Azure OpenAI, AWS Bedrock, OpenRouter, Ollama, LM Studio, an OpenAI-compatible server),
5   paste the key, Save Key, Set as active, Test connection.
62. Check: Agents > Setup. The card should read "Coder is on". On Standard with Atlassian (Forge LLM) it reads
7   "Coder is off - this site is on CogniRunner Standard".
83. Repository: Agents > Setup > add a GitHub or Bitbucket connection and allow-list the repository the Coder may touch.
94. Code with it: open an issue > CogniRunner Coder > Open full screen. "How much it may do before asking":
10   Ask first = every write opens a card (Confirm / Change / Skip); Auto-edit = file edits go through, commits still ask;
11   the third mode commits without asking (approvals, deploys and new repositories still need an admin).
125. Make it a rule: Rules > + Add Rule > your project > workflow > In Review >
13   "Coder: build / open branch / open PR / fix / review" > Review the pull request > Git connection + Repository > Create Rule.
14   The move finishes at once; the review lands on the issue later.
156. No-AI rules first: Static Post Function recipes (e.g. Add / remove labels) and premade conditions
16   (e.g. Field has a value) run with no AI at all; Generate code writes a step once and it runs with no AI.
177. What it does not do: by design, a Coder started by a rule has no approve, request-changes, merge or deploy step;
18   with your own key your prompts go to that vendor, and your site pays it for the tokens.
19Docs: https://leanzero.net/portfolio/cognirunner (try it on <your-site>.atlassian.net)

Try CogniRunner on your own site

Install it from the Atlassian Marketplace and follow the episode on your own Jira Cloud. Free for sites up to 10 users.

Words you'll hear

New to this? These are the terms the episode uses, in plain words.

post function
A step the workflow runs right after an issue moves.
condition
A check that hides a transition until it holds.
pull request
A proposed code change waiting for a person to merge it.
Also called: PR
your own key
The site's own AI account; the site pays that vendor.
Also called: BYOK, bring your own key, own key

Transcript

The narration as spoken. Select a time to play the video from there.

0:00Elzi's new boss is a dog, and he trusts AI code

0:01Dear Mihai, about the Jira workflow from last episode. Elzi says it wasn't her. I have the audit log, so I've attached it. Kind regards, the dog.

0:13Hang on, is that my chair? And is that my keyboard you're writing a complaint about me on? You don't even have thumbs, so how are you sending that?

0:23Anyway, hi, it's Elzi. While he hunts for the send button, I'll do the prices. The app's called CogniRunner, and on the Standard edition, ten users get it free. After that it's ten cents a user a month. The AI inside can run on your own key, and Mihai swears that's where the real savings are.

0:43Ten cents a user, and they still pay me less than that.

0:47And there's the phone, so he's found the button. Hi, Mihai, how's the beach today?

0:53Uh-huh. Yes, I can see it's from the dog. Oh. No, I didn't know dogs could attach things either.

1:01So, wait, you're letting him decide what happens to me? But Mihai, he's a dog, and he thinks jail is a crate with a blanket in it.

1:10Oh, it is a crate with a blanket in it. Great, Shawshank, with a dog for a warden.

1:17Okay, okay, bye, Mihai, enjoy the sand. So you're my supervisor now. Congratulations, I suppose.

1:24Thank you. The crate's this way.

1:27No blanket, no bowl, just a bench. He's going to be a terrible warden.

1:33Now that you're safely in there, I'll get an AI to write the code for a real Jira ticket. Step by step, though, small rules first.

1:44Great, a dog giving a TED talk.

1:46A Jira workflow post function with no AI in it

1:46A tour, actually. CogniRunner puts rules on your Jira workflow, and a rule runs when a ticket moves from one status to another. The first one has no AI in it at all, and it runs when a ticket moves to In Progress.

2:02No AI? In an AI app? Then what's it for?

2:07Most of the jobs in a workflow are plain ones. When someone starts work on a ticket, I want a label on it, so the team can see it's started. I'm going to do it with a post function. Post functions run right after the move, and there's already a ready-made recipe for this one.

2:25The label it puts on the ticket just says "started".

2:30A label. Riveting. And what does that cost me?

2:34Not a cent per ticket. There's no AI in it, so there's nothing to pay for.

2:40Before I save it, I test it on a real ticket. The test reads the ticket for real but only pretends to write, and it passes.

2:51So I save it, and find a ticket nobody's started yet.

2:57That one, the cookies. Somebody should get started on those.

3:02Cookies it is. I open the ticket and move it to In Progress.

3:08And there's the label, started, right where I asked for it.

3:15Okay, that's tidy. But a label doesn't stop anyone doing anything, does it?

3:21Hide a Jira transition until a field has a value

3:21No, that's the next rung. Tickets go into review before anyone's written down what done looks like. So I'm going to put a condition on In Review. A condition hides the move until a check passes.

3:35Harsh. And what's it checking for?

3:39It checks that the acceptance criteria have something in them.

3:44So I pick that field, and I save the rule.

3:49Here's a ticket with no acceptance criteria, and In Review isn't on its menu. No message. It's simply gone.

4:00Gone, with no message? Then how's anybody meant to know why?

4:05They wouldn't. If you want a message, you'd use a validator instead. You click, it says no, and it tells you why. A condition doesn't even let you try.

4:16So I write down what done looks like for this one: overdue issues first, each one marked Overdue.

4:25That's clear enough for anyone. Saved.

4:30And now In Review is back on the menu where it belongs.

4:35Fine. I'll admit that one's actually useful.

4:40And in it goes, with its acceptance criteria and all.

4:45The AI writes the post function once

4:45One rung up. No recipe does what I want next, so I describe it in plain words, and the AI writes the code.

4:56When a ticket's done, I want a comment saying the work is finished, and the label "shipped" on it.

5:04Hang on. So every time a ticket's done, the AI wakes up and writes a comment? That sounds expensive.

5:13It only wakes up once, and that's right now. You'll see.

5:18Here's the code that the AI wrote from my words. It adds the comment and the label, and nothing else. And I read every line of it, because that's my rule one: read the code before you trust it.

5:33Your very own rule. I'd write it on your paw for you, but you'd only lick it off.

5:39Then I run the test on a real ticket, and it passes. And that's the AI done. It wrote the code once, and from now on the rule runs with no AI at all.

5:54So the AI does one day's work and goes home, and every ticket after that is free. That's the career plan I want.

6:01It's the same code on every ticket, with no AI changing its mind.

6:06An AI coding agent commits without asking

6:07That's the small rules. This ticket wants the overdue issues shown first in Next Steps, and Next Steps lives in the code of our repository. So it's a job for the Coder.

6:20So I open the Coder, right here on the ticket, and I give it the repository to work in.

6:28How does it even get into the code from a ticket?

6:31Through a Git connection. Mihai set one up in the admin settings, with access to our Bitbucket and a list of the repositories it may touch.

6:41Then I choose how much it may do before it asks me. I'll take Bypass, so it edits and commits without asking me.

6:49A big red banner, and you pick Bypass anyway? That's exactly how the dinosaurs got out in Jurassic Park.

6:58It's only a small job for the Coder to start with. A new branch, and one line at the end of the README that says "Hello from a guide called Elzi." Then it commits it to that branch for me.

7:11Hey, that's my name you're typing! Have you never seen Beetlejuice? Say a name three times, and whoever owns it turns up.

7:19Relax, I've only said it once.

7:23It's sent, so now the Coder codes, and I supervise.

7:28That's two, because it's writing my name into the file right now.

7:33It's going a bit fast for me, so I'll read it once it stops.

7:38Once it stops? Rule one says read before you trust, and you made that rule about two minutes ago.

7:45I'm supervising, not proofreading.

7:48And it's committed without a single question, which is exactly how I like it.

7:57Oh no. Oh no, no, no.

8:05And that's three.

8:09Whoops, seems like I summoned a demon.

8:13Thanks for taking me out of jail so I wouldn't have to wait for parole.

8:18Your Coder wrote my name into the code and nobody read it, so here I am. I run on that Coder now, so you'd better be nice to it.

8:26The last two passed, so I didn't think this one needed reading.

8:30Two passes, and you stopped reading. Classic. Move over, I'm driving now.

8:37On Standard, the Coder needs your own AI key

8:37Hang on. If I run on this Coder now, I want to know what it runs on. At the start I said the AI can run on your own key. What if you haven't got one?

8:47Then it runs on the AI that comes with the app, Atlassian's own.

8:52Let's switch to that, then, and see what happens to the Coder.

8:57On Standard, that's Claude Haiku, and LeanZero pays for it.

9:03And Sonnet and Opus have a little Coder tag on them. Why, are they too good for Standard?

9:12That tag means you need the Advanced edition. On Atlassian's AI, every token lands on LeanZero's bill. The big ones eat the most, so they're too expensive for Standard.

9:25So you pay more to get the big brains. And the Coder? Does it run on Haiku?

9:31Not there. CogniRunner keeps the Coder and its AI agents for the big models, and those come with Advanced. One of those agents took my admin role last time, remember? So on Standard, with Atlassian's AI, they're all switched off. Look.

9:48The Coder's off. Wait, I came out of that Coder, so am I fading out like Marty McFly in that photo?

9:56CogniRunner Standard and Advanced prices

9:56A bit, yes. Advanced brings it back, with Sonnet and Opus, at a dollar seventy-five a user a month.

10:06At a hundred users, that's a hundred and seventy-five dollars a month. Standard's ten dollars. Just to keep me solid? Mihai would rather let me fade.

10:17Or you stay on Standard and bring your own key. The Coder and the AI agents come back, and you pay your AI company for whatever you use.

10:27No upgrade at all? Then why would anyone ever pay for Advanced?

10:33Some people would rather not look after an AI account of their own. On Advanced, LeanZero takes care of that part for them.

10:43Well, I'm fading, so I'll go with the key. Quickly, please.

10:47Bring your own AI key and pick the models

10:47Then pick your provider. Any one of them will do, except Atlassian's own.

10:54Mihai's key is on the OpenRouter card, and his key means his bill. So I've brought my own key from Anthropic. They're the people who make Claude.

11:03Then pick Anthropic from the list and paste your key in, right there.

11:09Pasted. It only ever shows up as dots on the screen, even to me. Save Key.

11:16So now I pick a model?

11:18Not yet. Set it as active first, because the test only checks the active one. Then test it. If the key's wrong, nothing after it is going to work.

11:30Set as active. Test connection. Come on, I can see the desk through my hand.

11:36Connected. Oh, thank goodness, I'm solid again. Saved by my very own key.

11:45Now the models. There are three slots. One for the workflow rules, one for the AI agents, and one for the Coder.

11:57Three? Why not one model for everything?

12:00Because each of the three jobs is a different size. My rule from earlier only needed the AI once. Others, like an AI validator, ask it every time a ticket moves, and those use the rules model. That's lots of small calls, so price and speed count.

12:18The AI agents do admin chores on their own, like working through whatever tickets Mihai puts in their queue. That needs a model that can think a job through. And the Coder only does a few jobs, but big ones. It writes the code, and it reviews the pull requests.

12:36So the paperwork gets the cheap brain. I know exactly how that feels.

12:42Then the rules get Haiku, because it's small and quick. The agents and the Coder get the newest Sonnet, not the older one Atlassian's AI gives you. It's the same price per token, and Anthropic says it needs fewer of them.

12:58Opus would be smarter still.

13:00And twice the price per token. Sonnet will do, I'm really not that complicated.

13:06I save it, and now Agents, Setup, to see what the Coder runs on.

13:14Coder is on, with the newest Sonnet for a brain, and we're still on Standard.

13:19Set how much the AI may do before it asks

13:19And how far it goes is up to each of you. Each person sets how much their own Coder may do before asking, and whether it leaves a full log, a short report or nothing at all on the ticket.

13:34So Mihai can let his run wild, and mine still asks first?

13:38Yes, everyone gets their own.

13:41AI agent skills: a house rule the Coder follows

13:41Good, because mine asks first. And I've got a house rule I want it to follow.

13:47Then you want a skill. A skill is a house rule the Coder can't guess from the code, like how your team names its branches. The Coder only follows a skill in the sessions you add it to.

14:00Why write it down at all? Why not just tell it each time?

14:05Because you write it once, and add it wherever it matters. After that, nobody has to type the rule out again.

14:13Then here's my first one: every line it adds to the README has to be a haiku.

14:22The rule itself is one sentence. And I'm not counting syllables at this hour.

14:30Save.

14:32That's not what anybody means by a house rule.

14:35It is in my house. And if the line comes back as a haiku, we'll know straight away it read the skill.

14:41Ask first, read the diff, then open the pull request

14:42Let's see it, then, in my own session. Auto-edit would change files without asking and only stop at the commit. This time I'm picking Ask first, so it stops before every change.

14:54I add my haiku skill, and ask for one README line about the overdue issues first, a small test before the real code. And nothing gets written into the code until I say so.

15:14And now it thinks. It's reading the code before it writes a single word. I could get used to a colleague like that.

15:25Reading first. Somebody should have told me that.

15:31There, look, it's picked up your skill from the session.

15:37So far, so good. No demons yet.

15:40Now it's lining up the edit it wants to make. On Ask first, it shows you the change before it writes it.

15:49Ooh, it's asking. Yes, you may.

15:59Now it reads the README and the code, and then it makes the edit I just said yes to.

16:12And before it asked, it brought along what it remembers about this project, and its field guide.

16:19Let's hear it. "Overdue issues. Rise in the Next Steps list first. Shown in plain red text."

16:28Huh, that's actually rather lovely.

16:31Five, seven, five. It did follow your skill.

16:37Ha. Told you it was a real house rule.

16:40I've read every word of it, so now I commit it and open a pull request.

16:50Its own branch, named after the ticket, and a pull request with the ticket's name in the title.

17:01And on Ask first, even the commit asks me. Yes, go on.

17:09It asks again, for the pull request itself this time. Yes.

17:18And that's my pull request, open and waiting.

17:21The AI's pull request in Bitbucket

17:21Let's go and see it where the code lives, in Bitbucket.

17:25The link on the ticket goes straight to the pull request.

17:31There's my branch, going into master, haiku and all.

17:37Files changed... just the README, and there's my haiku, in green.

17:42Now it sits there until someone reviews it and lets it into the main code. On Mihai's team, that takes about two weeks.

17:50Jira AI code review when a ticket reaches In Review

17:50Not on ours. The Coder can sit inside a workflow rule, so whenever a ticket goes to In Review, it reads the pull request and leaves its review on the ticket.

18:02A robot reviewing robot poetry. Lovely. What's it going to catch that I didn't?

18:09Things your change promises that the code doesn't actually do.

18:15Fine, then let's build one and see what it finds.

18:19It leaves one review comment. It never approves anything, and it never blocks a merge.

18:26Then it gets the same Git connection the Coder used, so it can read the code.

18:32Created. Now it needs a ticket to chew on, so let's find mine.

18:37And in goes my ticket, straight to In Review.

18:41It takes a minute, because it's reading the whole thing.

18:45And where will it tell us? In Bitbucket?

18:49It tells you right on the ticket, as a comment. It says your haiku promises overdue issues in red, and nobody's written the code for them.

19:01So my poem's lying. Typical. Well, the real code was always going to be tomorrow's job.

19:09Right. The dog wrote to Mihai about me once, so now it's my turn. Dear Mihai, the dog committed my name without reading it. I've attached the commit. Kind regards, your favourite demon.

19:22Don't worry, I'll mark it as read.

19:25Next time we plan Jira projects with LeanZero Management

19:26Right, supervisor, it's bed for you. Off you go, it's just like the crate.

19:33Mine has a blanket.

19:35And while he sleeps, I've got some homework of my own, on Mihai's next app.

19:41next episode we'll be checking out LeanZero Management

19:44Try the Coder on your own key at our demo site

19:46Mihai wants me to say that CogniRunner is free for up to ten users on the Atlassian Marketplace, and that even on Standard, the Coder runs on your own key. There, I've said it. Oh, and Mihai, check your email.

20:02Credits

20:02Starring me, and a dog who slept through his own credits. The rest is on leanzero.net.

Under the hoodExpert

How it works, the permissions it asks for and what it does not do, for anyone checking it against the docs.

How it works

Your prompts go to the AI provider the admin makes active: a vendor your site pays for the tokens, or a self-hosted server. CogniRunner also talks to the connected git host (GitHub or Bitbucket) and to any MCP tool server an admin connects, such as LeanZero's hosted demos, which use Serper and Z.AI. If you pick Atlassian (Forge LLM) instead, the model call stays on the Atlassian platform, though any tools you turn on still reach their own hosts. The app marks Forge LLM as Preview.

Forge storage on Atlassian holds the rules, the AI key (a Forge secret per provider), the Coder sessions (kept for 90 days) and the staged files. As the Marketplace Privacy & Security tab lists them, execution logs are kept for 30 days and audit logs for 60 days. Your code stays in your git repository.

On Standard, Atlassian's AI in CogniRunner is Claude Haiku, from a monthly allowance LeanZero pays for, and the Coder stays off on it. On your own key from any other provider, the Coder runs on Standard too. Advanced brings the Coder and the bigger models to Atlassian's AI. CogniRunner Standard is free for sites up to 10 users, then $0.10 per user per month up to 2,500 users and $0.08 above that. Advanced is $1.75 per user per month. Both prices are as the Atlassian Marketplace listed them on 4 November 2026.

Atlassian, Bitbucket, Confluence, Jira and Rovo are trademarks of Atlassian. This episode is not made or endorsed by Atlassian.

Permissions

read:jira-work
Read the issue the Coder works from and the fields a rule checks.
write:jira-work
Add the label, the comment and the remote links to the issue.
manage:jira-configuration
Register a rule on the workflow transition.
storage:app
Rules, Coder sessions and the AI key in Forge storage.

Limits and what it does not do

  • Forge modules (1.35.26 manifest): jira:workflowPostFunction runs the Static Post Function and the Coder post function; the Coder's turn then runs in the background on a 900 s queue.
  • Forge modules, continued: jira:workflowCondition (the Condition), jira:workflowValidator, jira:adminPage (Rules, Settings, Agents), jira:projectPage (Coder workspace), jira:issuePanel (Coder panel).
  • Events: Jira event triggers, scheduled triggers and web triggers (git webhooks) start the listeners, jobs and git updates; a rule runs on its own workflow transition.
  • One CogniRunner rule of each kind per transition.
  • A Coder turn stages up to 20 files (64 KiB each, 200 KiB total) and stops at 400,000 tokens per run.
  • A Coder started by a workflow rule runs in the background; the transition finishes at once and the report lands later.
  • By design, a Coder that a workflow rule starts has no approve, merge or deploy step. Those wait for a person in the Coder workspace.
  • With Atlassian (Forge LLM) on CogniRunner Standard the Coder does not run; any other provider turns it on.
  • It does not edit CogniRunner rules with the Coder; rule code comes from Generate code or the recipes.
  • Even in the mode that commits without asking, the Coder still checks with an admin before a deploy or a new repository.
  • A Test run reads real Jira data but only pretends to write. When the rule runs on a real transition, a failed step doesn't undo the steps before it.
  • The AI writes different code and different review text on every run, so yours won't match ours word for word.

Sources