<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>nullplatform changelog</title>
        <link>https://docs.nullplatform.com/changelog</link>
        <description>Platform updates and component releases</description>
        <lastBuildDate>Mon, 03 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Agent 0.9.0]]></title>
            <link>https://docs.nullplatform.com/changelog/agent-0.9.0</link>
            <guid>https://docs.nullplatform.com/changelog/agent-0.9.0</guid>
            <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Security updates for the control plane agent, including a Go runtime upgrade and patched x/net, x/text, and x/crypto modules.]]></description>
            <content:encoded><![CDATA[<p>Agent 0.9.0 is a security release. Upgrading is recommended for all installations.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/agent-0.9.0#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li>Go runtime upgraded from 1.25.8 to 1.25.12.</li>
<li><code>golang.org/x/net</code> v0.57.0 (CVE-2026-46600)</li>
<li><code>golang.org/x/text</code> v0.40.0 (CVE-2026-56852)</li>
<li><code>golang.org/x/crypto</code> v0.54.0</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/agent-0.9.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>Run a <code>helm upgrade</code> with the new image tag in your <code>values.yaml</code>. See the <a href="https://docs.nullplatform.com/docs/agent/install-helm">Helm installation guide</a>.</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Azure or GCP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.9.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># AWS</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aws</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">0.9.0</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Agent</category>
        </item>
        <item>
            <title><![CDATA[CLI 2.8.0]]></title>
            <link>https://docs.nullplatform.com/changelog/cli-2.8.0</link>
            <guid>https://docs.nullplatform.com/changelog/cli-2.8.0</guid>
            <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Browser SSO login, username and password login for organizations without SSO, a new np query command for the data lake, CI context in builds, and security updates.]]></description>
            <content:encoded><![CDATA[<p>CLI 2.8.0 changes how you log in and adds a read-only SQL interface to the data lake.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/cli-2.8.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>New interactive browser login against your organization's SSO: <code>np login --np-url https://&lt;your-org&gt;.app.nullplatform.io</code>, or set the <code>NP_LOGIN_URL</code> environment variable and run <code>np login</code> with no flags. See <a href="https://docs.nullplatform.com/docs/cli/#authentication">logging in from the terminal</a>.</li>
<li>New username and password login for organizations without SSO: <code>np login --username --password --organization-id</code>.</li>
<li>New <code>np query</code> command to run read-only SQL against your organization's data lake, with an interactive editor included.</li>
<li><code>np build start</code> now reports the CI context of a build (provider, run, actor, and workflow), auto-inferred on GitHub Actions, GitLab, Jenkins, CircleCI, Azure DevOps, Bitbucket, Buildkite, and Travis.</li>
<li><code>np service workflow build-context</code> now supports service notifications.</li>
<li>New <code>np namespace delete</code> command.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/cli-2.8.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li><code>np service-action exec</code> no longer reports a successful script as failed when it emits a large amount of output before exiting.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/cli-2.8.0#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li><code>golang.org/x/sys</code> v0.47.0 (CVE-2026-39824)</li>
<li><code>golang.org/x/text</code> v0.40.0 (CVE-2026-56852)</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/cli-2.8.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>CLI</category>
        </item>
        <item>
            <title><![CDATA[Scopes 1.14.0]]></title>
            <link>https://docs.nullplatform.com/changelog/scopes-1.14.0</link>
            <guid>https://docs.nullplatform.com/changelog/scopes-1.14.0</guid>
            <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Live deployment progress for Kubernetes scopes, a new Kill instance action for scheduled tasks, and clearer errors when triggering jobs on undeployed scopes.]]></description>
            <content:encoded><![CDATA[<p>Scopes 1.14.0 makes Kubernetes deployments easier to follow and scheduled task jobs easier to control.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/scopes-1.14.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>Kubernetes scope deployments now show their progress in real time as "X/Y launched" and "X/Y healthy", so you can tell how far along a rollout is at a glance.</li>
<li><a href="https://docs.nullplatform.com/docs/agent-backed-scopes/scheduled-tasks">Scheduled task</a> scopes have a new <strong>Kill instance</strong> action to terminate an individual running job instance.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/scopes-1.14.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Triggering a scheduled task job on a scope that is not deployed now fails with a clear message instead of an opaque error.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/scopes-1.14.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>If you pin the scopes version in your agent's <code>values.yaml</code>, update the branch reference:</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">values</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_REPO</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/nullplatform/scopes.git"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_BRANCH</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"v1.14.0"</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Scopes repository</div><div class="admonitionContent_hHo7"><p>Browse <a href="https://github.com/nullplatform/scopes/tree/v1.14.0" target="_blank" rel="noopener noreferrer">this release's source</a> and the <a href="https://github.com/nullplatform/scopes/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">full changelog</a> in the <a href="https://github.com/nullplatform/scopes" target="_blank" rel="noopener noreferrer">nullplatform/scopes</a> repository.</p></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Scopes</category>
        </item>
        <item>
            <title><![CDATA[Scopes 1.13.0]]></title>
            <link>https://docs.nullplatform.com/changelog/scopes-1.13.0</link>
            <guid>https://docs.nullplatform.com/changelog/scopes-1.13.0</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[AWS credentials via assume role, automatic ALB creation on scope create, nodeSelector for scheduled tasks, and a concurrency fix for IAM role creation.]]></description>
            <content:encoded><![CDATA[<p>Scopes 1.13.0 simplifies AWS credential handling and ALB provisioning.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/scopes-1.13.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>AWS credentials can now be obtained via assume role.</li>
<li>ALBs can be auto-created when a scope is created, instead of requiring one to exist beforehand.</li>
<li><a href="https://docs.nullplatform.com/docs/agent-backed-scopes/scheduled-tasks">Scheduled task</a> scopes support <code>nodeSelector</code>, so you can pin jobs to specific node groups.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/scopes-1.13.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Fixed a race condition in IAM role creation when multiple scopes are created concurrently.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/scopes-1.13.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>If you pin the scopes version in your agent's <code>values.yaml</code>, update the branch reference:</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">values</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_REPO</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/nullplatform/scopes.git"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_BRANCH</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"v1.13.0"</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Scopes repository</div><div class="admonitionContent_hHo7"><p>Browse <a href="https://github.com/nullplatform/scopes/tree/v1.13.0" target="_blank" rel="noopener noreferrer">this release's source</a> and the <a href="https://github.com/nullplatform/scopes/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">full changelog</a> in the <a href="https://github.com/nullplatform/scopes" target="_blank" rel="noopener noreferrer">nullplatform/scopes</a> repository.</p></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Scopes</category>
        </item>
        <item>
            <title><![CDATA[June 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/june-2026</link>
            <guid>https://docs.nullplatform.com/changelog/june-2026</guid>
            <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[June updates: the AI assistant now answers with live widgets, a beta of the new nullplatform UI, Kiro support for the nullplatform AI plugins, approvals for action items, and per-dimension access to secret parameter values.]]></description>
            <content:encoded><![CDATA[<p>June updates: the AI assistant now answers with live widgets, a beta of the new nullplatform UI, Kiro support for the nullplatform AI plugins, approvals for action items, and per-dimension access to secret parameter values.</p>
<!-- -->
<div class="card_uUly"><div class="badge_Hmf8">⚡ Feature highlight</div><div class="body_sbBf"><h2 class="anchor anchorWithStickyNavbar__yTu" id="-try-the-new-ui-beta">✨ Try the new UI (beta)<a href="https://docs.nullplatform.com/changelog/june-2026#-try-the-new-ui-beta" class="hash-link" aria-label="Direct link to ✨ Try the new UI (beta)" title="Direct link to ✨ Try the new UI (beta)">​</a></h2><p>We're rolling out a <strong>beta version of the nullplatform UI</strong> with a more modern, consistent look that's easier to navigate. This first release focuses on clearer information organization and a sharper visual hierarchy.</p><p>Turn it on from the <strong>user menu → Try new design</strong>. The setting is personal and only affects your view, so you can switch back to the classic design whenever you want.</p><p>Found something to improve? You can send us feedback or report bugs from that same menu.</p><div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_hHo7"><p>The new UI is available as a beta while we keep adding improvements.</p></div></div></div></div>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-run-into-a-problem-just-ask-the-ai-assistant">✨ Run into a problem? Just ask the AI assistant<a href="https://docs.nullplatform.com/changelog/june-2026#-run-into-a-problem-just-ask-the-ai-assistant" class="hash-link" aria-label="Direct link to ✨ Run into a problem? Just ask the AI assistant" title="Direct link to ✨ Run into a problem? Just ask the AI assistant">​</a></h2>
<p>When a deployment doesn't look right, the AI assistant is <strong>one click away</strong> in the platform. Open it and just ask. No IDs, no context to paste. It already knows what you're looking at, and returns a clear <strong>diagnosis</strong>, root cause, and <strong>next steps</strong> in seconds.</p>
<p>Answers come back as <strong>live widgets</strong> too. Instead of walls of text, you get <strong>tables, charts, and status cards</strong> you can read at a glance.</p>
<p>Investigate, debug, and troubleshoot, right where you work. 🚀</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/ai-assistant/overview">AI assistant docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-require-approval-before-resolving-action-items">✨ Require approval before resolving action items<a href="https://docs.nullplatform.com/changelog/june-2026#-require-approval-before-resolving-action-items" class="hash-link" aria-label="Direct link to ✨ Require approval before resolving action items" title="Direct link to ✨ Require approval before resolving action items">​</a></h2>
<p>Now when a developer resolves, defers, or rejects an action item, that change can go through nullplatform's standard <strong>approvals</strong> engine, the same one you already use across the platform. Instead of a separate embedded flow, you can require a reviewer to sign off before the item's state changes.</p>
<p>For example, to require a reviewer before a <strong>critical</strong> item can be rejected, create the approval action:</p>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-L</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-X</span><span class="token plain"> POST </span><span class="token string" style="color:#e3116c">'https://api.nullplatform.com/approval/action'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Content-Type: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Authorization: Bearer &lt;token&gt;'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "nrn": "organization=1:account=2",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "entity": "action_item",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "action": "action_item:reject",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "on_policy_success": "approve",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "on_policy_fail": "manual"</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">}'</span><br></span></code></pre></div></div>
<p>Then attach a policy that auto-approves every rejection except critical ones:</p>
<div class="language-json codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-json codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"nrn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"organization=1:account=2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Manual review for rejecting critical items"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"conditions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"action_item.priority"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"$ne"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"critical"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/action-items">Action items docs</a> and <a href="https://docs.nullplatform.com/docs/action-items/configure-and-manage#require-approval-to-transition-items">how to require approval</a>.</p>
<button type="button" class="facade_AQkk" aria-label="Play video: Require approval before resolving action items | nullplatform"><img src="https://i.ytimg.com/vi/h66SO2b8IgM/maxresdefault.jpg" alt="Require approval before resolving action items | nullplatform" class="facadeThumb_cuVn" loading="lazy"><span class="playButton_cXod" aria-hidden="true"><svg viewBox="0 0 68 48" width="68" height="48"><path class="playBg_azee" d="M66.5 7.7c-.8-2.9-2.5-5.4-5.4-6.2C55.8.1 34 0 34 0S12.2.1 6.9 1.6C4 2.4 2.3 4.8 1.5 7.7.1 13.1 0 24 0 24s.1 10.9 1.5 16.3c.8 2.9 2.5 5.3 5.4 6.1C12.2 47.9 34 48 34 48s21.8-.1 27.1-1.6c2.9-.8 4.6-3.2 5.4-6.1C67.9 34.9 68 24 68 24s-.1-10.9-1.5-16.3z"></path><path d="M45 24 27 14v20z" fill="#fff"></path></svg></span></button>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-control-secret-access-by-environment">✨ Control secret access by environment<a href="https://docs.nullplatform.com/changelog/june-2026#-control-secret-access-by-environment" class="hash-link" aria-label="Direct link to ✨ Control secret access by environment" title="Direct link to ✨ Control secret access by environment">​</a></h2>
<p>Approvals and policies for reading secret parameter values can now be scoped to specific <strong>dimensions</strong>, like an environment. Instead of unlocking every value of a parameter at once, an approval scoped to <code>environment: development</code> reveals only the development value and keeps the rest — including production — hidden.</p>
<p>This makes secret access per-environment: developers get instant, audited access in lower environments, while production stays behind a manual review.</p>
<p>For example, create the approval action for <code>parameter:read-secrets</code>:</p>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-L</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-X</span><span class="token plain"> POST </span><span class="token string" style="color:#e3116c">'https://api.nullplatform.com/approval/action'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Content-Type: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Authorization: Bearer &lt;token&gt;'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "nrn": "organization=1:account=2",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "entity": "parameter",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "action": "parameter:read-secrets",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "dimensions": {},</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "on_policy_success": "approve",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "on_policy_fail": "manual"</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">}'</span><br></span></code></pre></div></div>
<p>Then attach a policy that auto-approves secret reads only in the lower environments, so production requests fall through to manual review:</p>
<div class="language-json codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-json codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"nrn"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"organization=1:account=2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Auto-approve secret access in lower environments"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"conditions"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"dimensions.environment"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"$in"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"development"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"staging"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>👉 See <a href="https://docs.nullplatform.com/docs/parameters/secret-visibility">Accessing secret values</a> and the new tutorial <a href="https://docs.nullplatform.com/docs/tutorials/secrets-approval-by-environment">Approve secret access by environment</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-use-nullplatform-from-kiro">✨ Use nullplatform from Kiro<a href="https://docs.nullplatform.com/changelog/june-2026#-use-nullplatform-from-kiro" class="hash-link" aria-label="Direct link to ✨ Use nullplatform from Kiro" title="Direct link to ✨ Use nullplatform from Kiro">​</a></h2>
<p>The nullplatform AI plugins now work with <strong>Kiro</strong>, so you can interact with nullplatform straight from Kiro the same way you already can from Claude Code, Factory AI, and Codex CLI. Describe what you need in plain language and the plugin queries entities and calls the right API endpoints for you.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/tutorials/ai-plugins-setup">AI plugins setup guide</a>.</p>
<hr>
<p>That's all for June, from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>AI assistant</category>
            <category>AI plugins</category>
            <category>Action items</category>
            <category>Approvals</category>
            <category>Parameters</category>
            <category>Secrets</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[CLI 2.7.0]]></title>
            <link>https://docs.nullplatform.com/changelog/cli-2.7.0</link>
            <guid>https://docs.nullplatform.com/changelog/cli-2.7.0</guid>
            <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Read deleted accounts with np account read, find entity hooks from the CLI, and fixes for kebab-case flags and long script output in service actions.]]></description>
            <content:encoded><![CDATA[<p>CLI 2.7.0 adds a couple of quality-of-life commands and fixes two hangs.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/cli-2.7.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li><code>np account read --show-deleted</code> lets you read accounts that have been deleted.</li>
<li>New <code>np entity-hook find</code> command to look up entity hooks.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/cli-2.7.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Flags defined as <code>snake_case</code> in the API specs are now also accepted in their kebab-case form (for example <code>--show-deleted</code> matches the spec's <code>show_deleted</code>).</li>
<li><code>np service-action exec</code> no longer hangs when a script emits a single output line larger than 64 KB, and stream read errors now mark the action as failed instead of leaving it stuck in progress.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/cli-2.7.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>CLI</category>
        </item>
        <item>
            <title><![CDATA[Scopes 1.12.0]]></title>
            <link>https://docs.nullplatform.com/changelog/scopes-1.12.0</link>
            <guid>https://docs.nullplatform.com/changelog/scopes-1.12.0</guid>
            <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[File parameters with binary values, private Route53 zones with external_dns, configurable HTTP port, independent CPU and memory limits, and richer Diagnose evidence.]]></description>
            <content:encoded><![CDATA[<p>Scopes 1.12.0 adds long-requested container configuration options and smarter failure output.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/scopes-1.12.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>Parameters of type file now support binary values, and file parameters are no longer injected as environment variables.</li>
<li>Public and private scopes using <code>DNS_TYPE=external_dns</code> now register their DNS records in the correct Route53 hosted zone, preventing cross-zone record leakage.</li>
<li>The main HTTP port of Kubernetes scopes is now <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/containers/configurable-http-ports">configurable</a> (default 8080), and additional ports support HTTP. Requires traffic manager container version 1.7.0 or later.</li>
<li>Container memory and CPU limits are now <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/containers/cpu-and-memory-limits">configurable independently from requests</a>.</li>
<li><a href="https://docs.nullplatform.com/docs/agent-backed-scopes/diagnose/overview">Diagnose</a> checks now emit structured evidence with severity, affected resources, and suggested actions, failure findings embed the relevant pod log slice, and a new Application Logs category surfaces your application container's log tail directly in the UI.</li>
<li>When a deployment fails waiting to become active, repeated probe failures are consolidated into a single readable line, a progress heartbeat is emitted, and a suggested fix is shown based on the failure mode.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/scopes-1.12.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>If you pin the scopes version in your agent's <code>values.yaml</code>, update the branch reference:</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">values</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_REPO</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/nullplatform/scopes.git"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_BRANCH</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"v1.12.0"</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Scopes repository</div><div class="admonitionContent_hHo7"><p>Browse <a href="https://github.com/nullplatform/scopes/tree/v1.12.0" target="_blank" rel="noopener noreferrer">this release's source</a> and the <a href="https://github.com/nullplatform/scopes/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">full changelog</a> in the <a href="https://github.com/nullplatform/scopes" target="_blank" rel="noopener noreferrer">nullplatform/scopes</a> repository.</p></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Scopes</category>
        </item>
        <item>
            <title><![CDATA[May 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/may-2026</link>
            <guid>https://docs.nullplatform.com/changelog/may-2026</guid>
            <pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[May updates: configurable HTTP ports and tunable resource limits for Containers scopes, WAF protection for Static files, conditional entity hook firing, and external fields improvements.]]></description>
            <content:encoded><![CDATA[<p>May updates: configurable HTTP ports and tunable resource limits for Containers scopes, WAF protection for Static files, conditional entity hook firing, and external fields improvements.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-configurable-http-ports-for-containers-scopes">✨ Configurable HTTP ports for Containers scopes<a href="https://docs.nullplatform.com/changelog/may-2026#-configurable-http-ports-for-containers-scopes" class="hash-link" aria-label="Direct link to ✨ Configurable HTTP ports for Containers scopes" title="Direct link to ✨ Configurable HTTP ports for Containers scopes">​</a></h2>
<p>Not every application binds to <code>8080</code>, and some need to expose more than one HTTP listener. Containers scopes can now bind the main HTTP listener to any port and expose extra HTTP ports alongside it, all from the <strong>Exposed Ports</strong> section of the scope form.</p>
<p><strong>What you get:</strong></p>
<ul>
<li>A configurable <code>main_http_port</code> (default <code>8080</code>, range <code>1024</code> to <code>65535</code>). Nullplatform threads it through the Service, Ingress, container port, and health probes automatically.</li>
<li>HTTP support for <code>additional_ports</code>, each with its own Service and Ingress. Extra ports become reachable over HTTPS at the same hostname, with SSL terminated at the ALB using the existing wildcard certificate.</li>
</ul>
<p>The change is fully backward-compatible: scopes that don't set a main port keep using <code>8080</code>, and existing GRPC additional ports keep working without changes.</p>
<img alt="Scope form Exposed Ports section with the Main HTTP Port field" src="https://docs.nullplatform.com/img/scope/main-http-port-config.png" width="100%" class="helper-image">
<p>👉 See the <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/containers/configurable-http-ports">Configurable HTTP ports docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-tunable-cpu-and-memory-limits-for-containers-scopes">✨ Tunable CPU and memory limits for Containers scopes<a href="https://docs.nullplatform.com/changelog/may-2026#-tunable-cpu-and-memory-limits-for-containers-scopes" class="hash-link" aria-label="Direct link to ✨ Tunable CPU and memory limits for Containers scopes" title="Direct link to ✨ Tunable CPU and memory limits for Containers scopes">​</a></h2>
<p>Containers scopes now let you set CPU and memory <strong>limits</strong> independently from <strong>requests</strong>, so an application can request more resources than its steady-state baseline. The fields live under the <strong>ADVANCED → Resources</strong> tab and both default to <code>Same as request</code>.</p>
<p>This is an advanced knob with real trade-offs. Raising a limit above its request drops the pod from the <strong>Guaranteed</strong> to the <strong>Burstable</strong> QoS class, changing how Kubernetes schedules, throttles, and evicts it. The new page walks through each risk: QoS downgrade, memory overcommit and OOMKill, and CPU throttling. For most workloads, sticking to the default behavior remains the safer choice.</p>
<img alt="Scope edit form showing CPU and RAM request and limit fields under the Advanced Resources tab" src="https://docs.nullplatform.com/img/scope/cpu-and-memory-limits.png" width="100%" class="helper-image">
<p>👉 See the <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/containers/cpu-and-memory-limits">CPU and memory limits docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-waf-protection-for-static-files-scopes">✨ WAF protection for Static files scopes<a href="https://docs.nullplatform.com/changelog/may-2026#-waf-protection-for-static-files-scopes" class="hash-link" aria-label="Direct link to ✨ WAF protection for Static files scopes" title="Direct link to ✨ WAF protection for Static files scopes">​</a></h2>
<p>Static files scopes can now attach an existing AWS WAF WebACL to their CloudFront distribution, adding managed rules, rate limiting, and request filtering in front of your assets. The feature is opt-in and adds no IAM overhead unless enabled.</p>
<p>Set <code>aws_security = "waf"</code> and the WebACL name in your scope-configurations provider, or use the <strong>Security</strong> tab in the UI. Attaching, swapping, or detaching a WebACL is always an in-place update: the distribution ID stays stable and there's no downtime.</p>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_hHo7"><p>Only AWS WAFv2 WebACLs with <code>scope=CLOUDFRONT</code> in <code>us-east-1</code>, in the same account as the agent, are supported. The scope references an existing WebACL by name and never creates or modifies WAF resources.</p></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/static-files/waf">WAF protection docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-conditional-firing-for-entity-hooks">✨ Conditional firing for entity hooks<a href="https://docs.nullplatform.com/changelog/may-2026#-conditional-firing-for-entity-hooks" class="hash-link" aria-label="Direct link to ✨ Conditional firing for entity hooks" title="Direct link to ✨ Conditional firing for entity hooks">​</a></h2>
<p>You can now fire an entity hook only when the event that triggered it matches specific conditions, for example only when a deployment switches traffic to 100%. Instead of filtering the hook itself, you filter the <strong>notification channel</strong> the hook delivers through, using the same <code>filters</code> mechanism already available for Slack, HTTP, and agent notifications.</p>
<p>The framework injects the triggering operation's <code>request_body</code> into the notification context, so channel filters can match on any field from the API request that fired the hook.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/entity-hooks/filters">Conditional hook firing docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-reference-namespace-and-account-in-your-specifications">✨ Reference namespace and account in your specifications<a href="https://docs.nullplatform.com/changelog/may-2026#-reference-namespace-and-account-in-your-specifications" class="hash-link" aria-label="Direct link to ✨ Reference namespace and account in your specifications" title="Direct link to ✨ Reference namespace and account in your specifications">​</a></h2>
<p>The <code>additionalKeywords</code> jq context used by specifications now exposes the parent <strong>namespace</strong> and <strong>account</strong> of the resolved entity, alongside the existing application, scope, and service data. Both are derived automatically from the NRN cascade, so no extra parameter is needed to reference values like <code>.namespace.slug</code> or <code>.account.slug</code> in your dynamic schemas.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/services/craft-a-service/external-context">External fields docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-cli-270">✨ CLI 2.7.0<a href="https://docs.nullplatform.com/changelog/may-2026#-cli-270" class="hash-link" aria-label="Direct link to ✨ CLI 2.7.0" title="Direct link to ✨ CLI 2.7.0">​</a></h2>
<p>We've released version <code>2.7.0</code> of the nullplatform CLI, with a new command option and a bug fix.</p>
<p><strong>What's new in CLI 2.7.0:</strong></p>
<ul>
<li><code>np account read --show-deleted</code> now lets you read deleted accounts.</li>
<li>Fixed <code>np service-action exec</code> hanging when the command's stdout exceeded 64 KB.</li>
</ul>
<p><strong>Install the latest version:</strong></p>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/cli">CLI docs</a> for more info.</p>
<hr>
<p>That's all for May, from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>Scopes</category>
            <category>Containers</category>
            <category>Static files</category>
            <category>Security</category>
            <category>Entity hooks</category>
            <category>Services</category>
            <category>CLI</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[April 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/april-2026</link>
            <guid>https://docs.nullplatform.com/changelog/april-2026</guid>
            <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[April updates: data lake SQL API, AI-powered features (AI assistant, Insights, Action Items), external parameters, security best practices, and scope configurations.
]]></description>
            <content:encoded><![CDATA[<p>April updates: data lake SQL API, AI-powered features (AI assistant, Insights, Action Items), external parameters, security best practices, and scope configurations.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-configure-agent-backed-scopes-from-the-ui">✨ Configure agent-backed scopes from the UI<a href="https://docs.nullplatform.com/changelog/april-2026#-configure-agent-backed-scopes-from-the-ui" class="hash-link" aria-label="Direct link to ✨ Configure agent-backed scopes from the UI" title="Direct link to ✨ Configure agent-backed scopes from the UI">​</a></h2>
<p>Agent-backed scopes can now be configured from the nullplatform UI. Instead of managing every scope option through environment variables in your agent, you can define settings like Kubernetes namespace, domain, deployment strategy, and security options directly from the platform, using the same provider you already use for cloud credentials.</p>
<p>Configuration resolves in a clear priority order: provider configuration overrides environment variables, which override defaults. Apply settings at the organization, account, namespace, or scope level and let child levels inherit or override as needed.</p>
<p>Configure scopes from <strong>Platform Settings → Scopes → Configurations</strong>.</p>
<img alt="Scope configurations" src="https://docs.nullplatform.com/img/changelogs/2026/april/scope-configuration.png" width="100%" class="helper-image">
<p>👉 See the <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/scope-configurations">Scope configurations docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-static-files-scope">✨ Static files scope<a href="https://docs.nullplatform.com/changelog/april-2026#-static-files-scope" class="hash-link" aria-label="Direct link to ✨ Static files scope" title="Direct link to ✨ Static files scope">​</a></h2>
<p>The <strong>Static files scope</strong> is a new scope type for deploying SPAs, static websites, and front-end bundles. Nullplatform provisions the full CDN stack and handles DNS, HTTPS, and cache invalidation automatically, with no server-side runtime required.</p>
<p><strong>What you get:</strong></p>
<ul>
<li><strong>CDN distribution</strong>: CloudFront on AWS or Azure CDN on Azure, with HTTPS and SPA-friendly routing</li>
<li><strong>Automatic DNS</strong>: a custom subdomain (<code>{app}-{scope}.your-domain.com</code>) created and pointed at the CDN</li>
<li><strong>Cache invalidation</strong>: assets refreshed on every deployment</li>
<li><strong>Rollback</strong>: redeploy any previous release to instantly switch the CDN origin</li>
</ul>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/static-files/">Static files docs</a> to set it up on AWS or Azure.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-data-lake">✨ Data lake<a href="https://docs.nullplatform.com/changelog/april-2026#-data-lake" class="hash-link" aria-label="Direct link to ✨ Data lake" title="Direct link to ✨ Data lake">​</a></h2>
<p>The <strong>data lake</strong> gives you SQL read access to a queryable replica of your nullplatform organization's data. You can query audit events alongside the current state of your applications, scopes, deployments, parameters, and other resources, all through a single endpoint.</p>
<p><strong>What you can do with it:</strong></p>
<ul>
<li><strong>Build custom reports:</strong> Feed platform data into BI tools or external dashboards without manual exports.</li>
<li><strong>Investigate incidents:</strong> Cross-reference audit events with resource state at the time of a failure.</li>
<li><strong>Query with access control:</strong> Results are scoped automatically to the resources your API key can access via <a href="https://docs.nullplatform.com/docs/NRN">NRN</a>.</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>🧪 Early preview</div><div class="admonitionContent_hHo7"><p>The data lake is in early preview. Table schemas and query behavior may change as the product evolves.</p></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/data-lake/">Data lake docs</a> to connect and run your first query.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-security-best-practices">✨ Security best practices<a href="https://docs.nullplatform.com/changelog/april-2026#-security-best-practices" class="hash-link" aria-label="Direct link to ✨ Security best practices" title="Direct link to ✨ Security best practices">​</a></h2>
<p>We published a <strong>security best practices guide</strong> for teams using nullplatform, covering the key areas to get right from the start.</p>
<p><strong>Topics covered:</strong></p>
<ul>
<li>Namespace-based team separation and least-privilege role assignments</li>
<li>Secrets and parameters: versioning, rotation, and avoiding hardcoded values</li>
<li>Pipeline safety: machine-user API keys, approval workflows, and deployment controls</li>
<li>Observability: audit logs, alerting, and maintaining visibility over changes</li>
</ul>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/security-best-practices">Security best practices docs</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-keep-parameter-values-in-your-own-backend">✨ Keep parameter values in your own backend<a href="https://docs.nullplatform.com/changelog/april-2026#-keep-parameter-values-in-your-own-backend" class="hash-link" aria-label="Direct link to ✨ Keep parameter values in your own backend" title="Direct link to ✨ Keep parameter values in your own backend">​</a></h2>
<p>A new <strong>Storage</strong> section under <strong>Platform settings &gt; Parameters &amp; Secrets</strong> lets you keep parameter values in a backend you control instead of nullplatform's database. Two variants are available at launch:</p>
<ul>
<li><strong>HashiCorp Vault Self-Hosted</strong>: register your Vault address, mount, and base path in nullplatform. The Vault token never leaves your environment; nullplatform forwards the connection metadata to your handler on every parameter lifecycle event.</li>
<li><strong>Other agent-backed Storage</strong>: a generic option that routes parameter lifecycle events to a notification channel you configure. Use it for cloud secret managers, internal vaults, or any backend reachable from your infrastructure.</li>
</ul>
<p>The <strong>developer experience stays the same</strong>: parameter values still appear in the UI and the CLI and API contract is unchanged.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/parameters/storage">Storage backends overview</a> for a comparison of the variants and step-by-step setup guides.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-cli-260">✨ CLI 2.6.0<a href="https://docs.nullplatform.com/changelog/april-2026#-cli-260" class="hash-link" aria-label="Direct link to ✨ CLI 2.6.0" title="Direct link to ✨ CLI 2.6.0">​</a></h2>
<p>We've released version <code>2.6.0</code> of the nullplatform CLI, bringing new commands and improvements.</p>
<p><strong>What's new in CLI 2.6.0:</strong></p>
<ul>
<li>New <code>np upgrade</code> command to check for a newer CLI version and install it in place.</li>
<li>New <code>np browse</code> command to navigate across nullplatform entities from the terminal.</li>
<li>HTTP requests to the nullplatform API now include <code>x-np</code> headers.</li>
</ul>
<p><strong>Install the latest version:</strong></p>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/cli">CLI docs</a> for more info.</p>
<hr>
<p>That's all for April — from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>Data lake</category>
            <category>Security</category>
            <category>Scopes</category>
            <category>Parameters</category>
            <category>CLI</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[Agent 0.8.0]]></title>
            <link>https://docs.nullplatform.com/changelog/agent-0.8.0</link>
            <guid>https://docs.nullplatform.com/changelog/agent-0.8.0</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Security updates for the control plane agent, including a Go runtime upgrade and patched go-git and cloudflare-circl dependencies.]]></description>
            <content:encoded><![CDATA[<p>Agent 0.8.0 is a security release. The dependency updates include patches for known vulnerabilities, so upgrading is recommended for all installations.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/agent-0.8.0#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li>Go runtime upgraded from 1.25.7 to 1.25.8.</li>
<li><code>go-git</code> upgraded from v5.16.4 to v5.16.5, fixing CVE-2026-25934 (data integrity in <code>.pack</code> and <code>.idx</code> file handling).</li>
<li><code>cloudflare-circl</code> upgraded from 1.6.1 to 1.6.3.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/agent-0.8.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>Run a <code>helm upgrade</code> with the new image tag in your <code>values.yaml</code>. See the <a href="https://docs.nullplatform.com/docs/agent/install-helm">Helm installation guide</a>.</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Azure or GCP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.8.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># AWS</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aws</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">0.8.0</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Agent</category>
        </item>
        <item>
            <title><![CDATA[CLI 2.6.0]]></title>
            <link>https://docs.nullplatform.com/changelog/cli-2.6.0</link>
            <guid>https://docs.nullplatform.com/changelog/cli-2.6.0</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A new np upgrade command to keep the CLI current, np browse to navigate your nullplatform entities, and a new flag to list all entities at once.]]></description>
            <content:encoded><![CDATA[<p>CLI 2.6.0 makes the CLI easier to keep up to date and easier to explore.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/cli-2.6.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>New <code>np upgrade</code> command to detect whether a newer version is available and install it. The CLI also checks for new versions in the background and lets you know when one is out.</li>
<li>New <code>np browse</code> command to navigate nullplatform entities interactively from the terminal. See <a href="https://docs.nullplatform.com/docs/cli/#browsing-your-organization">browsing your organization</a>.</li>
<li>New <code>--all</code> flag on list commands to fetch every entity at once instead of paging.</li>
<li>Requests to the nullplatform API now carry <code>x-np</code> headers, improving traceability.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/cli-2.6.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>CLI</category>
        </item>
        <item>
            <title><![CDATA[Scopes 1.11.0]]></title>
            <link>https://docs.nullplatform.com/changelog/scopes-1.11.0</link>
            <guid>https://docs.nullplatform.com/changelog/scopes-1.11.0</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[ALB capacity validation, support for balancing multiple ALBs, scope configurations, ALB metrics publishing, and configurable traffic manager resources.]]></description>
            <content:encoded><![CDATA[<p>Scopes 1.11.0 makes ALB usage safer and more scalable, and introduces scope configurations. It requires new AWS permissions before upgrading.</p>
<!-- -->
<div class="theme-admonition theme-admonition-warning admonition_GrfC alert alert--warning"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Action required</div><div class="admonitionContent_hHo7"><p>The AWS permissions listed below must be configured before upgrading. Without them, scope creation and deployments will fail.</p></div></div>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/scopes-1.11.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>Scope creation now validates ALB capacity. Requires the AWS permissions <code>elasticloadbalancing:DescribeLoadBalancers</code>, <code>elasticloadbalancing:DescribeListeners</code>, and <code>elasticloadbalancing:DescribeRules</code>.</li>
<li>Every deployment now validates the ALB's target group capacity. Requires the AWS permission <code>elasticloadbalancing:DescribeTargetGroups</code>.</li>
<li>Scopes can now balance across multiple ALBs, prioritizing the one with the most idle capacity.</li>
<li>Scopes support <a href="https://docs.nullplatform.com/docs/agent-backed-scopes/scope-configurations">scope configurations</a>, optional cloud settings that developers can adjust per scope from the UI.</li>
<li>The traffic manager's memory and CPU limits are now configurable.</li>
<li><a href="https://docs.nullplatform.com/docs/agent-backed-scopes/alb-metrics-publishing">ALB metrics publishing</a> to CloudWatch or Datadog: rule count and target group count per ALB.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/scopes-1.11.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Fixed a blue-green switch-traffic failure when additional ports (for example gRPC) are added to a scope after its initial deployment.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/scopes-1.11.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>If you pin the scopes version in your agent's <code>values.yaml</code>, update the branch reference:</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">values</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_REPO</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/nullplatform/scopes.git"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_BRANCH</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.11.0"</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Scopes repository</div><div class="admonitionContent_hHo7"><p>Browse <a href="https://github.com/nullplatform/scopes/tree/1.11.0" target="_blank" rel="noopener noreferrer">this release's source</a> and the <a href="https://github.com/nullplatform/scopes/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">full changelog</a> in the <a href="https://github.com/nullplatform/scopes" target="_blank" rel="noopener noreferrer">nullplatform/scopes</a> repository.</p></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Scopes</category>
        </item>
        <item>
            <title><![CDATA[March 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/march-2026</link>
            <guid>https://docs.nullplatform.com/changelog/march-2026</guid>
            <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[March updates: external fields in service specifications, SCIM provisioning with Azure Entra ID, and notification traceability in service actions.
]]></description>
            <content:encoded><![CDATA[<p>March updates: external fields in service specifications, SCIM provisioning with Azure Entra ID, and notification traceability in service actions.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-external-fields-in-service-specifications">✨ External fields in service specifications<a href="https://docs.nullplatform.com/changelog/march-2026#-external-fields-in-service-specifications" class="hash-link" aria-label="Direct link to ✨ External fields in service specifications" title="Direct link to ✨ External fields in service specifications">​</a></h2>
<p>Service specifications can now <strong>include fields whose values are resolved from your infrastructure</strong>. When someone opens the form to create or link a service, the nullplatform agent running in your environment fetches the data and injects it into the schema dynamically.</p>
<p><strong>What you can do with it:</strong></p>
<ul>
<li><strong>Populate fields with real infrastructure data:</strong> Postgres users to assign as database owners, RabbitMQ vhosts to connect producers and consumers, existing S3 buckets, Route 53 hosted zones, or anything else your agent can query.</li>
<li><strong>No APIs to expose, no credentials to share:</strong> the handler script runs inside your agent. Nullplatform only sends the action context and validates the response against a schema you define.</li>
</ul>
<p>All you need on your side is a handler script in the agent and a dedicated notification channel. Nullplatform takes care of executing, validating, and resolving.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/services/craft-a-service/external-context">External fields docs</a> or the <a href="https://docs.nullplatform.com/docs/tutorials/external-context-dynamic-values">step-by-step tutorial</a>.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-scim-provisioning">✨ SCIM provisioning<a href="https://docs.nullplatform.com/changelog/march-2026#-scim-provisioning" class="hash-link" aria-label="Direct link to ✨ SCIM provisioning" title="Direct link to ✨ SCIM provisioning">​</a></h2>
<p>You can now <strong>automate user and group provisioning</strong> from your identity provider to nullplatform using the SCIM 2.0 protocol (RFC 7644). Instead of managing users manually, your IdP syncs them automatically.</p>
<p><strong>What it enables:</strong></p>
<ul>
<li>Automatic user creation, updates, and deactivation when changes happen in your IdP</li>
<li>Group membership sync for role-based access control</li>
<li>Real-time consistency between your identity provider and nullplatform</li>
</ul>
<p>The first supported provider is <strong>Azure Entra ID</strong>, with a step-by-step guide covering enterprise app setup, attribute mapping, group sync, and troubleshooting.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/authorization/scim/scim-overview">SCIM provisioning docs</a> to get started.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-notification-traceability-in-service-actions">✨ Notification traceability in service actions<a href="https://docs.nullplatform.com/changelog/march-2026#-notification-traceability-in-service-actions" class="hash-link" aria-label="Direct link to ✨ Notification traceability in service actions" title="Direct link to ✨ Notification traceability in service actions">​</a></h2>
<p>You can now <strong>see the notifications triggered by a service action directly from the action's workflow view</strong>, without jumping between tabs to correlate what was sent and where.</p>
<p><strong>Each notification shows:</strong></p>
<ul>
<li><strong>Delivery status:</strong> at-a-glance indicator of whether the notification was delivered, failed, or is still in progress.</li>
<li><strong>Channel used:</strong> the destination the event was routed to (agent, Slack, webhook, etc.).</li>
<li><strong>Quick links:</strong> open the full notification detail or jump straight to the agent logs for debugging.</li>
</ul>
<p>To access it:</p>
<ol>
<li>Go to <strong>Platform settings → Services</strong>.</li>
<li>Click the <strong>(⋮)</strong> menu on a service and select <strong>Actions</strong>.</li>
<li>Open the <strong>Review</strong> view of any action.</li>
<li>Expand an execution step to see its notifications.</li>
</ol>
<img alt="notification-traceability" src="https://docs.nullplatform.com/img/changelogs/2026/march/notification-traceability.png" width="100%" class="helper-image">
<hr>
<p>That's all for March — from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>Services</category>
            <category>SCIM</category>
            <category>Notifications</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[Agent 0.7.0]]></title>
            <link>https://docs.nullplatform.com/changelog/agent-0.7.0</link>
            <guid>https://docs.nullplatform.com/changelog/agent-0.7.0</guid>
            <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Command deduplication, runtime version management with mise in the agent image, an error logging fix, and a Go runtime update.]]></description>
            <content:encoded><![CDATA[<p>Agent 0.7.0 makes command handling more robust and adds runtime version tooling to the agent image.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/agent-0.7.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>Commands are now deduplicated, so a command delivered more than once executes only once.</li>
<li>The Docker image now ships with <code>mise</code>, enabling runtime version management for the tools your workflows run.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/agent-0.7.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Fixed a formatting issue when logging errors.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/agent-0.7.0#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li>Go runtime upgraded from 1.25.5 to 1.25.7.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/agent-0.7.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>Run a <code>helm upgrade</code> with the new image tag in your <code>values.yaml</code>. See the <a href="https://docs.nullplatform.com/docs/agent/install-helm">Helm installation guide</a>.</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Azure or GCP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.7.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># AWS</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aws</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">0.7.0</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Agent</category>
        </item>
        <item>
            <title><![CDATA[CLI 2.5.0]]></title>
            <link>https://docs.nullplatform.com/changelog/cli-2.5.0</link>
            <guid>https://docs.nullplatform.com/changelog/cli-2.5.0</guid>
            <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[New np provider specification commands to create, update, and delete provider specifications, plus fixes for provider listing and service actions.]]></description>
            <content:encoded><![CDATA[<p>CLI 2.5.0 completes the provider specification commands and fixes two rough edges.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/cli-2.5.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li><code>np provider specification</code> now supports <code>create</code>, <code>update</code>, and <code>delete</code>, so you can manage provider specifications end to end from the CLI.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/cli-2.5.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li><code>np provider list</code> now handles dimensions correctly.</li>
<li><code>np service-action exec</code> now handles action updates correctly.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/cli-2.5.0#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li>Go runtime upgraded from 1.25.5 to 1.25.7.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/cli-2.5.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>CLI</category>
        </item>
        <item>
            <title><![CDATA[February 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/february-2026</link>
            <guid>https://docs.nullplatform.com/changelog/february-2026</guid>
            <pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[February updates: platform-wide banners for broadcasting maintenance windows, incidents, and announcements across the nullplatform UI.
]]></description>
            <content:encoded><![CDATA[<p>February updates: platform-wide banners for broadcasting maintenance windows, incidents, and announcements across the nullplatform UI.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-platform-wide-banners">✨ Platform-wide banners<a href="https://docs.nullplatform.com/changelog/february-2026#-platform-wide-banners" class="hash-link" aria-label="Direct link to ✨ Platform-wide banners" title="Direct link to ✨ Platform-wide banners">​</a></h2>
<p>You can now broadcast messages to your team directly within the nullplatform UI using <strong>banners</strong>. Use them to communicate maintenance windows, incidents, outages, or general announcements, targeted to specific sections of the platform.</p>
<p><strong>Key highlights:</strong></p>
<ul>
<li><strong>Severity levels:</strong> choose from Informational (🔵), Maintenance (🟡), Degraded (🟠), or Outage (🔴) to match the nature of your message.</li>
<li><strong>Resource targeting:</strong> banners use the NRN hierarchy, so a banner on a namespace is visible on all its applications and scopes.</li>
<li><strong>Draft and publish workflow:</strong> save banners as drafts and publish them when ready. Unpublishing hides a banner without deleting it.</li>
<li><strong>Dismissible banners:</strong> users can dismiss banners individually. If an admin updates a dismissed banner, it reappears automatically.</li>
</ul>
<blockquote>
<p>ℹ️ <strong>Note:</strong> Only users with the <strong>Admin</strong> role can create, edit, publish, or delete banners.</p>
</blockquote>
<img alt="feature-banners" src="https://docs.nullplatform.com/img/feature-banner.png" width="100%" class="helper-image">
<p>👉 See the <a href="https://docs.nullplatform.com/docs/banners">Banners docs</a> for setup details.</p>
<hr>
<p>That's all for February — from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>Banners</category>
            <category>UI</category>
            <category>Communication</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[Agent 0.6.0]]></title>
            <link>https://docs.nullplatform.com/changelog/agent-0.6.0</link>
            <guid>https://docs.nullplatform.com/changelog/agent-0.6.0</guid>
            <pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A security release for the control plane agent, resolving known vulnerabilities in its dependencies.]]></description>
            <content:encoded><![CDATA[<p>Agent 0.6.0 is a security release resolving known vulnerabilities in the agent's dependencies. Upgrading is recommended for all installations.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/agent-0.6.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>Run a <code>helm upgrade</code> with the new image tag in your <code>values.yaml</code>. See the <a href="https://docs.nullplatform.com/docs/agent/install-helm">Helm installation guide</a>.</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Azure or GCP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.6.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># AWS</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">repository</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> public.ecr.aws/nullplatform/controlplane</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">pullPolicy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Always</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tag</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> aws</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">0.6.0</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Agent</category>
        </item>
        <item>
            <title><![CDATA[January 2026]]></title>
            <link>https://docs.nullplatform.com/changelog/january-2026</link>
            <guid>https://docs.nullplatform.com/changelog/january-2026</guid>
            <pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[January updates: cross-property JSON Schema validation, UI and discovery improvements, bulk grant creation, and OCI/OKE provider support.
]]></description>
            <content:encoded><![CDATA[<p>January updates: cross-property JSON Schema validation, UI and discovery improvements, bulk grant creation, and OCI/OKE provider support.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-ui-and-discovery-improvements">✨ UI and discovery improvements<a href="https://docs.nullplatform.com/changelog/january-2026#-ui-and-discovery-improvements" class="hash-link" aria-label="Direct link to ✨ UI and discovery improvements" title="Direct link to ✨ UI and discovery improvements">​</a></h2>
<p>This month includes several UI and usability improvements focused on faster discovery, clearer context, and better sorting across key views.</p>
<h3 class="anchor anchorWithStickyNavbar__yTu" id="applications-list-grid">Applications list (grid)<a href="https://docs.nullplatform.com/changelog/january-2026#applications-list-grid" class="hash-link" aria-label="Direct link to Applications list (grid)" title="Direct link to Applications list (grid)">​</a></h3>
<p>The <strong>Applications grid</strong> has been redesigned to make navigation and management easier.</p>
<ul>
<li>Quick access links to <strong>repository</strong>, <strong>scopes</strong>, and <strong>deployments</strong> are now available directly on each application card.</li>
<li>New sorting options, including <strong>recently used</strong>, help you find relevant applications faster.</li>
<li>Improved card layout and visual hierarchy for better scanning.</li>
</ul>
<img alt="applications-grid" src="https://docs.nullplatform.com/img/changelogs/2026/january/applications-grid.png" width="100%" class="helper-image">
<h3 class="anchor anchorWithStickyNavbar__yTu" id="search-and-sorting-enhancements">Search and sorting enhancements<a href="https://docs.nullplatform.com/changelog/january-2026#search-and-sorting-enhancements" class="hash-link" aria-label="Direct link to Search and sorting enhancements" title="Direct link to Search and sorting enhancements">​</a></h3>
<p>We’ve expanded filtering and sorting capabilities across multiple sections of the platform:</p>
<ul>
<li><strong>Namespaces:</strong> new sort by name option.</li>
<li><strong>Releases:</strong> sort by name and created date.</li>
<li><strong>Logs:</strong> improved sorting when using date range filters.</li>
<li><strong>Releases list:</strong> search now supports more flexible matching by branch.</li>
<li><strong>Service actions view:</strong> now shows <strong>Last activity</strong> so you can quickly see recent usage.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-oci-and-oke-provider-support">✨ OCI and OKE provider support<a href="https://docs.nullplatform.com/changelog/january-2026#-oci-and-oke-provider-support" class="hash-link" aria-label="Direct link to ✨ OCI and OKE provider support" title="Direct link to ✨ OCI and OKE provider support">​</a></h2>
<p>You can now configure <strong>Oracle Cloud Infrastructure (OCI)</strong> and <strong>Oracle Kubernetes Engine (OKE)</strong> as supported
providers in nullplatform. This expands your cloud and container orchestration options, enabling you to run agent workloads and manage clusters on Oracle Cloud.</p>
<p><strong>Where to configure them:</strong></p>
<ul>
<li><strong>OCI:</strong> Platform settings → Cloud providers</li>
<li><strong>OKE:</strong> Platform settings → Container orchestration</li>
</ul>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/providers/supported-integrations">Supported providers</a> docs for setup details.</p>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-cross-property-validation-in-json-schema-data">✨ Cross-property validation in JSON Schema ($data)<a href="https://docs.nullplatform.com/changelog/january-2026#-cross-property-validation-in-json-schema-data" class="hash-link" aria-label="Direct link to ✨ Cross-property validation in JSON Schema ($data)" title="Direct link to ✨ Cross-property validation in JSON Schema ($data)">​</a></h2>
<p>Forms generated from JSON Schema now support <strong>cross-property validation</strong> using AJV’s <code>$data</code> extension.<br>
<!-- -->You can define rules that compare values across fields directly in the schema — for example, requiring one field to be greater than another.</p>
<p><strong>Example:</strong> ensure <code>interval</code> is greater than <code>timeout</code>:</p>
<div class="language-json codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-json codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"object"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"properties"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"timeout"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"number"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"title"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Timeout (seconds)"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"interval"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"number"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"title"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Interval (seconds)"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"exclusiveMinimum"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"$data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1/timeout"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<ul>
<li><code>"$data": "1/timeout"</code> is a <strong>relative JSON Pointer</strong>: <code>1</code> = parent object, <code>timeout</code> = property.</li>
<li>The <code>interval</code> value must be <strong>strictly greater</strong> than <code>timeout</code>.</li>
</ul>
<p>You can also use <code>$data</code> with keywords such as <code>minimum</code>, <code>maximum</code>, <code>minLength</code>, and <code>maxLength</code> to express cross-field rules.</p>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/json-ui-schema/json-schema">Special JSON schema keys docs</a> for more details.</p>
<img alt="cross-property-validation" src="https://docs.nullplatform.com/img/changelogs/2026/january/cross-property-validation.png" width="100%" class="helper-image">
<h2 class="anchor anchorWithStickyNavbar__yTu" id="-bulk-create-grants-for-a-user">✨ Bulk create grants for a user<a href="https://docs.nullplatform.com/changelog/january-2026#-bulk-create-grants-for-a-user" class="hash-link" aria-label="Direct link to ✨ Bulk create grants for a user" title="Direct link to ✨ Bulk create grants for a user">​</a></h2>
<p>You can now <strong>create multiple grants for a user in a single request</strong>, simplifying and speeding up permissions management.</p>
<p>Use the user ID and send a bulk request to the grants endpoint:</p>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-L</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'https://api.nullplatform.com/user/:id/grant'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Content-Type: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Accept: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Authorization: Bearer &lt;token&gt;'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'[</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  {</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "nrn": "organization=1:account=2",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "role_slug": "developer"</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  },</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  {</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "nrn": "organization=1:account=3",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "role_slug": "ops"</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">]'</span><br></span></code></pre></div></div>
<p>👉 See the <a href="https://docs.nullplatform.com/docs/authorization/grants">Grants and permissions docs</a> for more information.</p>
<hr>
<p>Wishing you a fantastic year ahead – from the <strong>nullplatform</strong> team! ❤️</p>]]></content:encoded>
            <category>UI</category>
            <category>Forms</category>
            <category>Search</category>
            <category>Permissions</category>
            <category>Providers</category>
            <category>OCI</category>
            <category>OKE</category>
            <category>Monthly changelog</category>
        </item>
        <item>
            <title><![CDATA[Scopes 1.10.0]]></title>
            <link>https://docs.nullplatform.com/changelog/scopes-1.10.0</link>
            <guid>https://docs.nullplatform.com/changelog/scopes-1.10.0</guid>
            <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Configure the traffic manager nginx through a configmap, override the Kubernetes namespace per scope, and get better Diagnose checks.]]></description>
            <content:encoded><![CDATA[<p>Scopes 1.10.0 brings more control over how Kubernetes scopes are deployed and better diagnostics when something goes wrong.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="highlights">Highlights<a href="https://docs.nullplatform.com/changelog/scopes-1.10.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights">​</a></h2>
<ul>
<li>The traffic manager's nginx can now be configured through a configmap, so you can adjust its behavior without rebuilding anything.</li>
<li>Kubernetes scopes support a <code>NAMESPACE_OVERRIDE</code> configuration, letting you choose the namespace a scope's resources are created in.</li>
<li><a href="https://docs.nullplatform.com/docs/agent-backed-scopes/diagnose/overview">Diagnose</a> gained new checks, improved logging in existing ones, and documentation.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/scopes-1.10.0#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>Deleting cluster objects now keeps only one deployment per scope, avoiding leftovers from previous deployments.</li>
<li>Actions that are not valid for the scope's current deployment status are no longer executed.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/scopes-1.10.0#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<p>If you pin the scopes version in your agent's <code>values.yaml</code>, update the branch reference:</p>
<div class="language-yaml codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-yaml codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configuration</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">values</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_REPO</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.com/nullplatform/scopes.git"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">GITHUB_BRANCH</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1.10.0"</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_GrfC alert alert--info"><div class="admonitionHeading_CL7z"><span class="admonitionIcon_QnBI"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Scopes repository</div><div class="admonitionContent_hHo7"><p>Browse <a href="https://github.com/nullplatform/scopes/tree/1.10.0" target="_blank" rel="noopener noreferrer">this release's source</a> and the <a href="https://github.com/nullplatform/scopes/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">full changelog</a> in the <a href="https://github.com/nullplatform/scopes" target="_blank" rel="noopener noreferrer">nullplatform/scopes</a> repository.</p></div></div>]]></content:encoded>
            <category>Release</category>
            <category>Scopes</category>
        </item>
        <item>
            <title><![CDATA[CLI 2.4.2]]></title>
            <link>https://docs.nullplatform.com/changelog/cli-2.4.2</link>
            <guid>https://docs.nullplatform.com/changelog/cli-2.4.2</guid>
            <pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A patch release fixing empty request bodies on retries, plus a Go runtime security update.]]></description>
            <content:encoded><![CDATA[<p>CLI 2.4.2 is a small patch release with a retry fix and a security update.</p>
<!-- -->
<h2 class="anchor anchorWithStickyNavbar__yTu" id="fixes">Fixes<a href="https://docs.nullplatform.com/changelog/cli-2.4.2#fixes" class="hash-link" aria-label="Direct link to Fixes" title="Direct link to Fixes">​</a></h2>
<ul>
<li>HTTP request retries no longer send an empty body.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="security-updates">Security updates<a href="https://docs.nullplatform.com/changelog/cli-2.4.2#security-updates" class="hash-link" aria-label="Direct link to Security updates" title="Direct link to Security updates">​</a></h2>
<ul>
<li>Go runtime upgraded to 1.25.5, fixing CVE-2025-61729 (excessive resource consumption in certificate validation) and CVE-2025-61727 (subdomain constraint bypass in certificate chains).</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar__yTu" id="upgrade">Upgrade<a href="https://docs.nullplatform.com/changelog/cli-2.4.2#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade">​</a></h2>
<div class="language-bash codeBlockContainer_Q7Hs theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_CIL4"><pre tabindex="0" class="prism-code language-bash codeBlock_FdNl thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_A1nn"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://cli.nullplatform.com/install.sh </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sh</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>Release</category>
            <category>CLI</category>
        </item>
    </channel>
</rss>