{"id":713197,"date":"2026-06-17T23:00:00","date_gmt":"2026-06-17T22:00:00","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=junie&#038;p=713197"},"modified":"2026-06-17T10:05:32","modified_gmt":"2026-06-17T09:05:32","slug":"junie-coding-agent-out-of-beta","status":"publish","type":"junie","link":"https:\/\/blog.jetbrains.com\/de\/junie\/2026\/06\/junie-coding-agent-out-of-beta\/","title":{"rendered":"Junie: The JetBrains AI Coding Agent Leaves Beta."},"content":{"rendered":"\n<p>Junie started as an experiment. We asked, \u201cWhat if an AI coding agent didn&#8217;t just guess at the details of your project, but actually used the same tools you do?\u201d Over the last year, that experiment turned into a product used by developers every day \u2013 inside the IDE and the <a href=\"https:\/\/blog.jetbrains.com\/junie\/2026\/03\/junie-cli-the-llm-agnostic-coding-agent-is-now-in-beta\/\" target=\"_blank\" rel=\"noreferrer noopener\">terminal<\/a>.&nbsp;<\/p>\n\n\n\n<p>Today, the JetBrains AI coding agent is leaving Beta. This isn&#8217;t a rename or a repackage. The parts of Junie that matter most are stable, connected, and ready for real work. Junie plans before it codes, debugs with the real debugger, reviews PRs while considering your project&#8217;s context, and runs long tasks while you focus on other things.<\/p>\n\n\n\n<p>On the latest run of <a href=\"https:\/\/swe-rebench.com\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/swe-rebench.com\/\" rel=\"noreferrer noopener\">SWE-Rebench<\/a> \u2013 an independent agent benchmark \u2013 Junie placed as the number-one coding agent.<\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">    <div class=\"blockquote\">\n                    <blockquote><p>\u201cSWE-Rebench draws fresh tasks each cycle to keep the evaluation honest, so results move from run to run. In this cycle Junie came out as the top model-harness, with 61.6% resolved and a 72.7% pass@5 \u2014 placing it ahead of the other agents and competitive with raw frontier models\u201d<\/p><\/blockquote>\n            <div class=\"blockquote__author\">\n                                    <img decoding=\"async\" class=\"blockquote__author-img\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/06\/img-2025-01-10T163916.965.png\" alt=\"\">\n                                <div class=\"blockquote__author-info\">\n                                            <strong class=\"blockquote__author-title\">Alexander Golubev<\/strong>\n                                                                <span class=\"blockquote__author-subtitle\"> Research Lead at Nebius<\/span>\n                                    <\/div>\n            <\/div>\n            <\/div>\n<\/div>\n<\/div>\n\n\n\n<p>We believe that delegating work to an agent should be something you can afford to do often, not just for heroic one-offs. Thus Junie supports any model, without lock-in \u2013 and that&#8217;s how you control cost. Use the latest models from frontier labs from day zero, or point Junie at a local runtime. It&#8217;s the lever that lets you decide what each task costs. Top-tier reasoning models are powerful but expensive; smaller models are fast and cheap. Junie lets you put each one where it does the most good. Cost efficiency stops being a property of the tool and becomes a dial you hold.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/jb.gg\/junie-out-of-beta-blog\" class=\"btn\" target=\"_blank\" rel=\"noopener\">Install Junie<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<p>Here&#8217;s what comes with the move to general availability:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Advanced Plan mode: The agent thinks before it codes<\/strong><\/h3>\n\n\n\n<p>One of the most common causes of failure in AI coding agents is unwavering confidence when they are totally incorrect \u2013 they start implementing before anyone has agreed on what they&#8217;re doing. You end up reviewing a PR that solves the wrong problem or burning tokens on a path you would have rejected in the first thirty seconds.<\/p>\n\n\n\n<p><strong>Plan mode<\/strong> fixes that by making the plan a first-class artifact.<\/p>\n\n\n\n<p>Before Junie writes code, it produces a structured document with tabs for product requirements, technical design, delivery stages, and (when requested) testing strategy. You read the doc. You edit it directly in your editor. You approve it. And <em>then<\/em> Junie implements it.<\/p>\n\n\n\n<p>This approach is superior to \u201cbetter prompting\u201d, for a few reasons:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The plan is a real document.<\/strong> It lives in .junie\/plans. You can commit it, and it becomes living task documentation, not a throwaway chat message.<\/li>\n\n\n\n<li><strong>The agent asks the right questions.<\/strong> When requirements are ambiguous, Junie asks multiple-choice and freeform questions to pin things down, instead of guessing and hoping.<\/li>\n\n\n\n<li><strong>Junie plans before it codes \u2013 meaning fewer wasted tokens and fewer broken PRs.<\/strong> Every wasted implementation run is tokens you paid for and a review cycle you&#8217;ll have to do anyway. Plan on a strong model; implement on a cheap one. The agent doesn&#8217;t wander, so your bill stays low.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Enter <em>Plan<\/em> mode with Shift+Tab. Open the plan with Ctrl+P. And when you&#8217;re ready, hit <em>Confirm<\/em> to implement the changes.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Junie Advanced Plan Mode\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/YpaU2sT4sss?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Agentic debugging: Junie uses the debugger, not <\/strong><code>println<\/code><\/h3>\n\n\n\n<p>When something goes wrong, most coding agents add log statements. Junie opens the debugger.<\/p>\n\n\n\n<p>With the GA version, Junie can drive your IDE&#8217;s debugger the way you would:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start or join a debug session.<\/strong> Junie can launch a run configuration, debug a test, or take over an existing session you already have open.<\/li>\n\n\n\n<li><strong>Set breakpoints anywhere that matters<\/strong>, including project code, library code, SDK code \u2013 even decompiled .class files and sources inside JARs. If your IDE can step into it, Junie can set a breakpoint in it.<\/li>\n\n\n\n<li><strong>Inspect the real runtime state.<\/strong> Stack frames, thread state, expression evaluation, run-to-line \u2013 Junie collects actual evidence instead of theorizing about what your code might be doing.<\/li>\n<\/ul>\n\n\n\n<p>This allows Junie to use debugging patterns that you previously had to work with manually:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>&#8220;Debug and figure out why this test fails only on the second iteration.&#8221;<\/strong> Fully autonomous \u2013 Junie drives the whole thing.<\/li>\n\n\n\n<li><strong>&#8220;Prepare the debugger, I&#8217;ll trigger the UI flow.&#8221;<\/strong> Junie sets up breakpoints and waits for you.<\/li>\n\n\n\n<li><strong>&#8220;Continue my current debug session and tell me why this value becomes null.&#8221;<\/strong> Hand off routine inspection work while you think about the bigger picture.<\/li>\n<\/ul>\n\n\n\n<p>Today this works end to end in JetBrains IDEs with an AI subscription.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Junie Agentic Debugging\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/hEzFl8ozIPk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Remote control: Start a task, and keep an eye on it from anywhere<\/strong><\/h3>\n\n\n\n<p>Some work doesn&#8217;t fit in a focused 30-minute session, for example a Spring Boot upgrade, a migration to Java records, or adding test coverage to a legacy service. These are exactly the tasks autonomous agents are good at \u2013 and it&#8217;s even better when you don&#8217;t have to sit and watch.<\/p>\n\n\n\n<p>Start a task from your laptop. Check progress from your phone during a meeting. Review the PR over coffee. Junie runs asynchronously and keeps the session available from anywhere you sign in.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Junie Remote Control\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/qYRcPdhjshY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Code review without lost context<\/strong><\/h3>\n\n\n\n<p>Most review tools see your codebase for the first time when the PR opens. Junie reviews with the same project context it uses to write code: your build, your tests, your conventions, your past decisions.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Three entry points.<\/strong> Trigger a review from GitHub Actions or GitLab (including on-prem), or by using the \/review command in the CLI or the plugin. Set the scope to unstaged changes, staged changes, or a diff against main \u2013 your call.<\/li>\n\n\n\n<li><strong>Interactive walkthrough.<\/strong> Junie highlights each meaningful change, explains the design decision behind it, and gives you accept\/reject controls inline. Drop a PR comment on the spot when something looks wrong.<\/li>\n\n\n\n<li><strong>Adaptation to your focus.<\/strong> Ask a follow-up question and Junie reorders the remaining review around what you care about, instead of marching through files alphabetically.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Deep IDE integration: An AI coding agent that uses your IDE&#8217;s tools<\/strong><\/h3>\n\n\n\n<p>Junie has always worked inside JetBrains IDEs. Earlier this year we <a href=\"https:\/\/blog.jetbrains.com\/junie\/2026\/04\/junie-cli-inside-your-jb-ide\/\">showed you how to connect it<\/a>. In Junie\u2019s GA version, we\u2019ve rebuilt that integration on top of ACP (the Agent Communication Protocol), the same protocol Junie CLI uses to talk to your IDE.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>One engine, many surfaces.<\/strong> The same agent is behind the AI chat, the dedicated Junie tool window, and Junie CLI. Improvements ship once and show up everywhere.<\/li>\n\n\n\n<li><strong>Your IDE, the agent&#8217;s toolbox.<\/strong> Junie uses your IDE&#8217;s semantic index, build configurations, test runners, and debugger, not its own approximation of them.&nbsp;<\/li>\n\n\n\n<li><strong>Database integration.<\/strong> Junie connects to the databases configured in your IDE through DataGrip and the JetBrains Database plugin, and then it queries your real data and writes, fixes, and validates SQL in the same session that handles your code.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What this adds up to<\/strong><\/h3>\n\n\n\n<p>Individually, each of these features solves a specific problem. Together, they change what an agent is <em>for<\/em>.<\/p>\n\n\n\n<p>An agent that understands your project, lets you approve the work before doing it, runs it while you&#8217;re doing something else, debugs it properly when things break, reviews your PRs with the full project context, and queries your real data \u2013 that&#8217;s an agent you can actually delegate to.<\/p>\n\n\n\n<p><strong>That&#8217;s the bar we set for leaving Beta.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Getting started<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Junie is available in all JetBrains IDEs and through Junie CLI in your terminal. If you already have a JetBrains AI subscription, everything works out of the box.&nbsp;<\/li>\n\n\n\n<li>Bring Your Own Key works too \u2013 enjoy access to Anthropic, OpenAI, Google, and others.&nbsp;<\/li>\n\n\n\n<li>Junie connects to local model runtimes \u2013 point it at LiteLLM, LMStudio, Ollama and the agent runs using whatever model you have loaded on your own machine. Prompts and code never shared externally.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Install Junie, open your project, and test it out on a real task (maybe one you\u2019ve been procrastinating on).&nbsp;<\/p>\n\n\n\n<p>Then tell us what broke, what surprised you, and what you\u2019d like to see next. Every feature above came from that feedback loop, and it doesn\u2019t end with the move to GA.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/jb.gg\/junie-out-of-beta-blog\" class=\"btn\" target=\"_blank\" rel=\"noopener\">Try Junie<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n","protected":false},"author":1645,"featured_media":713190,"comment_status":"open","ping_status":"closed","template":"","categories":[9159,8397,89],"tags":[8725,8759,76,477],"cross-post-tag":[8396],"class_list":["post-713197","junie","type-junie","status-publish","has-post-thumbnail","hentry","category-agentic-ai","category-jetbrains-ai","category-news","tag-ai-agent","tag-junie","tag-news","tag-release","cross-post-tag-ai"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/junie\/713197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/junie"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/types\/junie"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/users\/1645"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/comments?post=713197"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/junie\/713197\/revisions"}],"predecessor-version":[{"id":713434,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/junie\/713197\/revisions\/713434"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media\/713190"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media?parent=713197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/categories?post=713197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/tags?post=713197"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/cross-post-tag?post=713197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}