<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://caipe.io/blog/releases</id>
    <title>CAIPE Blog</title>
    <updated>2026-07-28T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://caipe.io/blog/releases"/>
    <subtitle>CAIPE Blog</subtitle>
    <icon>https://caipe.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Release 0.5.63 — Secret Sharing Team Picker Fix]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.63</id>
        <link href="https://caipe.io/blog/releases/release-0.5.63"/>
        <updated>2026-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-28]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-28
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.63</code>
Previous release: 0.5.62</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.63#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.63 is a small fix for the credential sharing panel: the team picker was querying an admin-only endpoint and showing "No teams available" for regular users, even when they belonged to a team they could share with.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.63#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>credentials</strong>: the secret sharing panel now loads share candidates from the caller-scoped teams endpoint instead of an admin-only one, so regular users see the teams they actually belong to instead of an empty picker. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2312" target="_blank" rel="noopener noreferrer" class="">#2312</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.63#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.62.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.63#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0562--0563">Upgrade Guide: 0.5.62 → 0.5.63<a href="https://caipe.io/blog/releases/release-0.5.63#upgrade-guide-0562--0563" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.62 → 0.5.63" title="Direct link to Upgrade Guide: 0.5.62 → 0.5.63" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.63#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.63#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.62 and 0.5.63. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.63#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.63#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.63 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-verify">2. Verify<a href="https://caipe.io/blog/releases/release-0.5.63#2-verify" class="hash-link" aria-label="Direct link to 2. Verify" title="Direct link to 2. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If non-admin users previously saw "No teams available" when trying to share a credential, confirm their team now appears in the picker.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.63#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.63#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.62 and 0.5.63.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.62 — Scheduler Access Control & Skills Catalog Fixes]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.62</id>
        <link href="https://caipe.io/blog/releases/release-0.5.62"/>
        <updated>2026-07-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-26]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-26
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.62</code>
Previous release: 0.5.61</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.62#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.62 gives admins finer control over who can see and edit the Scheduler agent, fixes several skills-catalog authorization bugs that were dropping skills for API-key and JWT callers, and stops the Webex bot from dropping messages during reconnect storms. It also <strong>changes the default AgentGateway authorization posture for the scheduler MCP server</strong> — see Breaking Changes below.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.62#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scheduler-admin-access-controls">Scheduler admin access controls<a href="https://caipe.io/blog/releases/release-0.5.62#scheduler-admin-access-controls" class="hash-link" aria-label="Direct link to Scheduler admin access controls" title="Direct link to Scheduler admin access controls" translate="no">​</a></h3>
<ul>
<li class="">Admins can now change the default schedule-editor agent from Admin Settings instead of it being fixed at deploy time.</li>
<li class="">The Scheduler tab correctly hides itself for normal users when admin-only access is enabled — previously it stayed visible even when the underlying access was restricted.</li>
<li class="">Scheduler documentation was updated to match. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2292" target="_blank" rel="noopener noreferrer" class="">#2292</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.62#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>skills</strong>: the skills catalog API key and local skills JWT paths returned a session with no subject, which silently dropped every skill for programmatic callers (<code>caipe-skills.py</code>, <code>install.sh</code>, <code>update-caipe-skills</code>). Both paths now resolve a subject correctly.</li>
<li class=""><strong>skills</strong>: once the subject was fixed, the catalog API key path still filtered out hub and global <code>agent_skills</code>, returning only default filesystem skills — it now returns the full set of globally-visible skills.</li>
<li class=""><strong>skills</strong>: the OpenFGA subject-match bypass for the catalog API key compared against the raw subject instead of the <code>user:</code>-prefixed value the route handler actually sends, so the bypass never fired — global skills were still filtered out for CLI callers. Fixed and covered by regression tests.</li>
<li class=""><strong>webex-wdm</strong>: the Webex bot now refreshes its WDM device registration on both graceful (<code>ConnectionClosedOK</code>) and abnormal (<code>ConnectionClosedError</code>) WebSocket closes from Mercury, instead of only the abnormal case — closing a gap where a clean-but-expired <code>webSocketUrl</code> caused a drop-reconnect-drop loop and missed messages.</li>
<li class=""><strong>rag</strong>: sitemap ingestion now recurses into sitemap index files (<code>&lt;sitemapindex&gt;</code>) instead of treating each child sitemap URL as a page, fixing sites that split their sitemap into multiple files silently ingesting zero content.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://caipe.io/blog/releases/release-0.5.62#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h2>
<p><strong>AgentGateway <code>restrictedMcpServers</code> default changed from <code>[scheduler]</code> to <code>[]</code>.</strong> Caller-level <code>mcp_server:&lt;id&gt;#can_invoke</code> authorization is no longer enforced for the scheduler MCP target by default — restricting it is now opt-in via Helm values instead of baked into the chart default. See Breaking Changes for the upgrade action.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.62#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p><strong>Affected key</strong>: <code>agentgateway.authz.restrictedMcpServers</code> (exact path depends on your chart layout — check your rendered values)</p>
<p><strong>Before (0.5.61)</strong>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">authz</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">restrictedMcpServers</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> scheduler</span><br></span></code></pre></div></div>
<p><strong>After (0.5.62)</strong>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">authz</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">restrictedMcpServers</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><br></span></code></pre></div></div>
<p><strong>Action</strong>: If you rely on the scheduler MCP target requiring per-caller <code>can_invoke</code> authorization, set <code>restrictedMcpServers: [scheduler]</code> explicitly in your <code>values.yaml</code> before upgrading. Left unset, any caller with general MCP gateway access can invoke the scheduler MCP target — use the Scheduler admin-only UI toggle (see What's New) as your access control instead, or restore the old Helm-level restriction.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.62#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0561--0562">Upgrade Guide: 0.5.61 → 0.5.62<a href="https://caipe.io/blog/releases/release-0.5.62#upgrade-guide-0561--0562" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.61 → 0.5.62" title="Direct link to Upgrade Guide: 0.5.61 → 0.5.62" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.62#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Not a drop-in upgrade if you depend on the previous <code>restrictedMcpServers: [scheduler]</code> default — see Breaking Changes. Otherwise no other <code>values.yaml</code> edits required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.62#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes-1">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.62#breaking-changes-1" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h4>
<p>See above: <code>restrictedMcpServers</code> default changed from <code>[scheduler]</code> to <code>[]</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.62#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-valuesyaml-if-needed">1. Update <code>values.yaml</code> if needed<a href="https://caipe.io/blog/releases/release-0.5.62#1-update-valuesyaml-if-needed" class="hash-link" aria-label="Direct link to 1-update-valuesyaml-if-needed" title="Direct link to 1-update-valuesyaml-if-needed" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">authz</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">restrictedMcpServers</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> scheduler</span><br></span></code></pre></div></div>
<p>Add this only if you want to keep enforcing caller-level authorization on the scheduler MCP target the way 0.5.61 and earlier did by default.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-update-chart-version">2. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.62#2-update-chart-version" class="hash-link" aria-label="Direct link to 2. Update chart version" title="Direct link to 2. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.62 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-verify">3. Verify<a href="https://caipe.io/blog/releases/release-0.5.62#3-verify" class="hash-link" aria-label="Direct link to 3. Verify" title="Direct link to 3. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If your Scheduler is set to admin-only access in Admin Settings, confirm the Scheduler tab is now correctly hidden for a non-admin test user.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.62#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>If your <code>values.yaml</code> does not set <code>restrictedMcpServers</code> explicitly, scheduler MCP access control now depends entirely on the Scheduler admin-only UI toggle rather than the AgentGateway default — review which one your deployment actually needs before upgrading.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.62#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Raw diff (0.5.61 → 0.5.62)</summary><div><div class="collapsibleContent_i85q"><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token coord">--- 0.5.61</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token coord">+++ 0.5.62</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token coord">@@ -1490,9 +1490,8 @@</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    algorithms:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">      - RS256</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  # Require caller-level `mcp_server:&lt;id&gt;#can_invoke` authorization only for</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">  # these AgentGateway MCP targets.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">  restrictedMcpServers:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    - scheduler</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">  # these AgentGateway MCP targets. Empty by default; restrictions are opt-in.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">  restrictedMcpServers: []</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  audit:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    enabled: true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    serviceUrl: ""</span><br></span></code></pre></div></div></div></div></details>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.61 — SSO Idle Timeout Fix & Insights Drill-Down]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.61</id>
        <link href="https://caipe.io/blog/releases/release-0.5.61"/>
        <updated>2026-07-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-24]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-24
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.61</code>
Previous release: 0.5.60</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.61#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.61 fixes an SSO session bug that was randomly logging out idle users, adds per-user OAuth token support to the Webex and Confluence MCP servers, and lets admins click into a day's feedback directly from the Insights trend chart.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.61#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="feedback-trend-drill-down">Feedback trend drill-down<a href="https://caipe.io/blog/releases/release-0.5.61#feedback-trend-drill-down" class="hash-link" aria-label="Direct link to Feedback trend drill-down" title="Direct link to Feedback trend drill-down" translate="no">​</a></h3>
<p>Clicking a point on the Admin → Insights feedback trend chart now opens the Feedback tab pre-filtered to that day, with Back returning you to Statistics. Existing source, user, and simulation filters carry through unchanged. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2283" target="_blank" rel="noopener noreferrer" class="">#2283</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="insights-user-drawer-for-scoped-viewers">Insights user drawer for scoped viewers<a href="https://caipe.io/blog/releases/release-0.5.61#insights-user-drawer-for-scoped-viewers" class="hash-link" aria-label="Direct link to Insights user drawer for scoped viewers" title="Direct link to Insights user drawer for scoped viewers" translate="no">​</a></h3>
<p>Insights readers can now open the user drawer for users within their permitted resource scope or team, not just full admins — while server-side RBAC still governs exactly which conversations are visible. Top Users cards are now paginated (10 rows per page) instead of loading everything at once. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2285" target="_blank" rel="noopener noreferrer" class="">#2285</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.61#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>ui</strong>: fixed users being logged out mid-session when their Keycloak SSO idle timer expired while a tab sat open but idle. A 6-hour keepalive now refreshes the session before the 8-hour idle window closes. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2288" target="_blank" rel="noopener noreferrer" class="">#2288</a>)</li>
<li class=""><strong>webex</strong>: the Webex MCP server now uses a connected user's own OAuth token when available, falling back to the shared bot token — enabling per-user impersonation instead of every call running as the bot.</li>
<li class=""><strong>confluence</strong>: the Confluence MCP server now sends per-user Atlassian OAuth tokens as Bearer auth against the correct Atlassian API host, fixing "cannot access Confluence" for users with a connected Atlassian credential. Static bot-token deployments are unaffected.</li>
<li class=""><strong>rag</strong>: closed several RBAC gaps in the RAG server where document/chunk reads, job endpoints, and graph-explore endpoints checked only a coarse role instead of the per-datasource grant already enforced elsewhere — inaccessible datasources are now filtered or denied consistently. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2269" target="_blank" rel="noopener noreferrer" class="">#2269</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.61#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.60.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.61#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0560--0561">Upgrade Guide: 0.5.60 → 0.5.61<a href="https://caipe.io/blog/releases/release-0.5.61#upgrade-guide-0560--0561" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.60 → 0.5.61" title="Direct link to Upgrade Guide: 0.5.60 → 0.5.61" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.61#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.61#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.60 and 0.5.61. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.61#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.61#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.61 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-verify">2. Verify<a href="https://caipe.io/blog/releases/release-0.5.61#2-verify" class="hash-link" aria-label="Direct link to 2. Verify" title="Direct link to 2. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If users on your deployment were reporting random logouts after long idle periods, confirm those stop occurring after this upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.61#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.61#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.60 and 0.5.61.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.59 — Remote MCP Catalog]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.59</id>
        <link href="https://caipe.io/blog/releases/release-0.5.59"/>
        <updated>2026-07-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-23]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-23
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.59</code>
Previous release: 0.5.58</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.59#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.59 adds a remote MCP catalog to the MCP Server Editor — browse and add pre-configured remote MCP providers (Amplitude, Figma, Linear, Notion, ThousandEyes, AWS, PagerDuty, and more) without hand-writing server config. This release also republishes the <code>mcp-webex</code> image that was missing from 0.5.58, and fixes a deployment default that broke built-in workflow tools for dynamic agents.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.59#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="remote-mcp-catalog">Remote MCP catalog<a href="https://caipe.io/blog/releases/release-0.5.59#remote-mcp-catalog" class="hash-link" aria-label="Direct link to Remote MCP catalog" title="Direct link to Remote MCP catalog" translate="no">​</a></h3>
<ul>
<li class=""><strong>Catalog dialog in the MCP Server Editor</strong> — browse pre-configured remote MCP providers and add them with prefilled config, gated behind <code>NEXT_PUBLIC_REMOTE_MCP_CATALOG_ENABLED</code>. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2263" target="_blank" rel="noopener noreferrer" class="">#2263</a>)</li>
<li class=""><strong>Admin Settings → MCP tab</strong> — manage installed remote MCP catalog entries alongside the existing Agents tab.</li>
<li class=""><strong>Test Connection</strong> — validates a saved credential and triggers OAuth (PKCE/standard) for providers that require it, right from the MCP Server Editor.</li>
<li class=""><strong>Built-in OAuth connectors</strong> for Amplitude, Figma, Linear, and Notion, plus a ThousandEyes catalog entry.</li>
<li class=""><strong>AgentGateway config bridge resilience</strong> — keeps the last-known-good config and retries instead of crashing when the BFF is temporarily unavailable.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.59#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>helm</strong>: dynamic agents now default <code>CAIPE_API_URL</code> to the in-cluster CAIPE UI service for the release, fixing built-in workflow tool calls that previously failed with "No scheme supplied" when the value was left unset. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2255" target="_blank" rel="noopener noreferrer" class="">#2255</a>)</li>
<li class=""><strong>ci</strong>: fork pull requests no longer fail CI on unrelated GitHub App token steps that only work for in-org contributors. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2281" target="_blank" rel="noopener noreferrer" class="">#2281</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues-resolved">Known Issues Resolved<a href="https://caipe.io/blog/releases/release-0.5.59#known-issues-resolved" class="hash-link" aria-label="Direct link to Known Issues Resolved" title="Direct link to Known Issues Resolved" translate="no">​</a></h2>
<p><code>mcp-webex:0.5.58</code> was missing from <code>ghcr.io</code> due to a CI digest-naming collision (see the <a class="" href="https://caipe.io/blog/releases/release-0.5.58">0.5.58 release notes</a>). The fix landed in the 0.5.58 prereleases and this tag republishes a working <code>mcp-webex:0.5.59</code> image — no action needed beyond upgrading past 0.5.58.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.59#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.58.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.59#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0558--0559">Upgrade Guide: 0.5.58 → 0.5.59<a href="https://caipe.io/blog/releases/release-0.5.59#upgrade-guide-0558--0559" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.58 → 0.5.59" title="Direct link to Upgrade Guide: 0.5.58 → 0.5.59" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.59#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.59#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>Comment-only change: <code>dynamic-agents.config.CAIPE_API_URL</code> now documents that leaving it empty defaults to the in-cluster CAIPE UI service (<code>http://&lt;release-name&gt;-caipe-ui:3000</code>), and should only be overridden when pointing dynamic agents at an external CAIPE UI/BFF. No key was added, removed, or renamed.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.59#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.59#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.59 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-try-the-remote-mcp-catalog-optional">2. Try the remote MCP catalog (optional)<a href="https://caipe.io/blog/releases/release-0.5.59#2-try-the-remote-mcp-catalog-optional" class="hash-link" aria-label="Direct link to 2. Try the remote MCP catalog (optional)" title="Direct link to 2. Try the remote MCP catalog (optional)" translate="no">​</a></h4>
<p>Set <code>NEXT_PUBLIC_REMOTE_MCP_CATALOG_ENABLED=true</code> in the CAIPE UI environment to enable the catalog dialog in the MCP Server Editor.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-verify">3. Verify<a href="https://caipe.io/blog/releases/release-0.5.59#3-verify" class="hash-link" aria-label="Direct link to 3. Verify" title="Direct link to 3. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If you were hitting <code>ImagePullBackOff</code> on <code>mcp-webex:0.5.58</code>, confirm it resolves once you're on <code>0.5.59</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.59#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.59#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Raw diff (0.5.58 → 0.5.59)</summary><div><div class="collapsibleContent_i85q"><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token coord">--- 0.5.58</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token coord">+++ 0.5.59</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token coord">@@ -1094,7 +1094,9 @@</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    # Connections &amp; Secrets credential exchange client. Disabled by default.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    CAIPE_CREDENTIALS_ENABLED: "false"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    CREDENTIAL_API_URL: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    # CAIPE UI server base URL for built-in workflow tools.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    # CAIPE UI server base URL for built-in workflow tools. Leave empty to get</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    # the in-cluster default http://&lt;release-name&gt;-caipe-ui:3000; override only</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    # when pointing dynamic-agents at an external CAIPE UI/BFF.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    CAIPE_API_URL: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    CREDENTIAL_SERVICE_AUDIENCE: "caipe-credential-service"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    USE_IMPERSONATION_TOKENS: "false"</span><br></span></code></pre></div></div></div></div></details>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.60 — Auto-Create Team Sync Fix]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.60</id>
        <link href="https://caipe.io/blog/releases/release-0.5.60"/>
        <updated>2026-07-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-23]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-23
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.60</code>
Previous release: 0.5.59</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.60#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.60 is a focused fix for deployments that enable login-time team auto-creation: OIDC group membership now syncs into OpenFGA team tuples even when no explicit group-sync rules are configured, restoring team-scoped resource sharing for non-admin users.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.60#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>rbac</strong>: when <code>IDENTITY_SYNC_LOGIN_AUTO_CREATE_TEAMS</code> is enabled but no <code>identity_group_sync</code> rules are configured, login now synthesizes a passthrough rule mapping each OIDC group to a same-named team instead of silently writing zero OpenFGA membership tuples. This was breaking team-scoped resource sharing (for example, the team dropdown in secret sharing) for every non-admin user on affected deployments. Behavior is unchanged if you already configure <code>identity_group_sync</code> rules, or if auto-create is off. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2282" target="_blank" rel="noopener noreferrer" class="">#2282</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.60#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.59.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.60#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0559--0560">Upgrade Guide: 0.5.59 → 0.5.60<a href="https://caipe.io/blog/releases/release-0.5.60#upgrade-guide-0559--0560" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.59 → 0.5.60" title="Direct link to Upgrade Guide: 0.5.59 → 0.5.60" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.60#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.60#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.59 and 0.5.60. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.60#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.60#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.60 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-verify">2. Verify<a href="https://caipe.io/blog/releases/release-0.5.60#2-verify" class="hash-link" aria-label="Direct link to 2. Verify" title="Direct link to 2. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If you run with <code>IDENTITY_SYNC_LOGIN_AUTO_CREATE_TEAMS=true</code> and no <code>identity_group_sync</code> rules, expect newly logged-in users to start getting team-membership tuples written on next login — this is the intended fix, not a regression.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.60#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.60#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.59 and 0.5.60.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.57 — Admin Insights Reliability Fixes]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.57</id>
        <link href="https://caipe.io/blog/releases/release-0.5.57"/>
        <updated>2026-07-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-22]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-22
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.57</code>
Previous release: 0.5.56</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.57#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.57 is a focused reliability pass on the Admin Insights dashboard introduced in recent releases: stats now load independently per card, filters apply consistently everywhere, message counts no longer double-count each conversation turn, and the user activity drawer works again.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.57#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="insights-cards-load-independently">Insights cards load independently<a href="https://caipe.io/blog/releases/release-0.5.57#insights-cards-load-independently" class="hash-link" aria-label="Direct link to Insights cards load independently" title="Direct link to Insights cards load independently" translate="no">​</a></h3>
<p>Each Admin Insights stat card now fetches and renders as soon as its own data is ready, instead of the whole dashboard waiting on the slowest section. Filter changes are debounced, stale requests are cancelled, and only bot-dependent sections refetch when the bot filter changes.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2260" target="_blank" rel="noopener noreferrer" class="">#2260</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.57#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>insights</strong>: message totals were counting both the human prompt and the AI response as two messages per exchange; now only assistant-authored messages count toward totals, consistently across overview, daily activity, top-user rankings, agent usage, response-time, and hourly activity metrics. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2267" target="_blank" rel="noopener noreferrer" class="">#2267</a>)</li>
<li class=""><strong>insights</strong>: date, source, user/team, agent, channel, and bot filters now apply consistently across every Insights card and chart — previously some cards ignored certain filters. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2270" target="_blank" rel="noopener noreferrer" class="">#2270</a>)</li>
<li class=""><strong>insights</strong>: restored the user activity drawer (it was calling a Keycloak endpoint that no longer matched its expected contract) and made Total Users, Conversations, and Messages counts respect the selected date range. Fixed a crash when opening 90-day activity links for legacy, ownerless leaderboard rows. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2259" target="_blank" rel="noopener noreferrer" class="">#2259</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.57#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.56.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.57#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0556--0557">Upgrade Guide: 0.5.56 → 0.5.57<a href="https://caipe.io/blog/releases/release-0.5.57#upgrade-guide-0556--0557" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.56 → 0.5.57" title="Direct link to Upgrade Guide: 0.5.56 → 0.5.57" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.57#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required. This release only changes Admin Insights behavior; no Helm values changed.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.57#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.56 and 0.5.57. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.57#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.57#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.57 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-verify">2. Verify<a href="https://caipe.io/blog/releases/release-0.5.57#2-verify" class="hash-link" aria-label="Direct link to 2. Verify" title="Direct link to 2. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>If your team relies on Admin Insights message totals for reporting, expect totals to roughly halve after this upgrade — that's the double-counting fix, not a data loss.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.57#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required. No action needed beyond the chart bump.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.57#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.56 and 0.5.57.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.58 — CI Build Reliability (Native Per-Arch Images)]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.58</id>
        <link href="https://caipe.io/blog/releases/release-0.5.58"/>
        <updated>2026-07-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-22]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-22
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.58</code>
Previous release: 0.5.57</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.58#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.58 is an internal CI reliability release with no application-facing changes: container image builds for <code>arm64</code> now run on native ARM runners instead of QEMU emulation, fixing intermittent build timeouts and out-of-memory failures that were affecting release tagging.</p>
<p><strong>Known issue:</strong> the <code>mcp-webex</code> container image failed to publish under this exact <code>0.5.58</code> tag due to a CI bug (see Known Issues below). If you use the Webex MCP server, pin <code>mcp-webex</code> to <code>0.5.57</code> or <code>latest</code> instead of <code>0.5.58</code> until you upgrade to a later release.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.58#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="native-per-arch-image-builds">Native per-arch image builds<a href="https://caipe.io/blog/releases/release-0.5.58#native-per-arch-image-builds" class="hash-link" aria-label="Direct link to Native per-arch image builds" title="Direct link to Native per-arch image builds" translate="no">​</a></h3>
<p>RAG images and the remaining 11 image-building CI workflows (agentgateway config bridge, OpenFGA authz bridge, Keycloak init, audit service, CAIPE UI, dynamic agents, MCP servers, scheduler, skill scanner, Slack bot, Webex bot) now build their <code>arm64</code> variant on native <code>ubuntu-24.04-arm</code> runners instead of cross-building via QEMU emulation. QEMU emulation had started timing out or exhausting runner memory on heavier images (e.g. <code>ingestors/default</code> installing Chromium), causing release-tagging CI runs to fail. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2272" target="_blank" rel="noopener noreferrer" class="">#2272</a>, <a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2274" target="_blank" rel="noopener noreferrer" class="">#2274</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.58#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>workflow</strong>: corrected the release workflow's global status check so it accurately reflects whether all required jobs passed.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.58#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.57.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.58#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p><strong><code>mcp-webex</code> image missing for the <code>0.5.58</code> tag.</strong> The <code>[CI][MCP] MCP Servers Docker Build and Push</code> workflow failed on this release's tag push: the manifest-merge step for <code>mcp-webex</code> errored with a digest "not found", caused by a digest-artifact naming collision across the 11 parallel MCP server image builds. Every other MCP server image (and every other service image in this release) published successfully — only <code>mcp-webex:0.5.58</code> is affected.</p>
<ul>
<li class="">The underlying bug was fixed in <a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2277" target="_blank" rel="noopener noreferrer" class="">#2277</a> (<code>fix(ci): disambiguate digest artifact patterns to prevent name-prefix collisions</code>), but that fix landed in the <code>0.5.58-dev.2</code>/<code>0.5.58-dev.3</code> prereleases — after the <code>0.5.58</code> tag was already cut. It was never backported to republish the numbered <code>0.5.58</code> tag itself.</li>
<li class=""><code>ghcr.io/cnoe-io/mcp-webex:0.5.58</code> does not exist. <code>ghcr.io/cnoe-io/mcp-webex:latest</code> is unaffected and currently points past this issue.</li>
<li class=""><strong>If your <code>values.yaml</code> pins <code>mcp-webex</code> to <code>0.5.58</code> explicitly</strong>, the image pull will fail. Pin it to <code>0.5.57</code> or <code>latest</code> instead, or wait for the next numbered release, which will include the fix.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0557--0558">Upgrade Guide: 0.5.57 → 0.5.58<a href="https://caipe.io/blog/releases/release-0.5.58#upgrade-guide-0557--0558" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.57 → 0.5.58" title="Direct link to Upgrade Guide: 0.5.57 → 0.5.58" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.58#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade for every component except <code>mcp-webex</code> — no <code>values.yaml</code> edits required. This release is CI-tooling-only; no application code changed.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.58#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.57 and 0.5.58. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.58#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.58#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.58 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-if-you-use-the-webex-mcp-server">2. If you use the Webex MCP server<a href="https://caipe.io/blog/releases/release-0.5.58#2-if-you-use-the-webex-mcp-server" class="hash-link" aria-label="Direct link to 2. If you use the Webex MCP server" title="Direct link to 2. If you use the Webex MCP server" translate="no">​</a></h4>
<p>Do not pin <code>mcp-webex</code> to <code>0.5.58</code> — that tag does not exist on <code>ghcr.io</code>. Keep it on <code>0.5.57</code> or <code>latest</code>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">mcpWebex</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">tag</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"0.5.57"</span><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)"># or "latest" — do not use "0.5.58"</span><br></span></code></pre></div></div>
<p>All other component images are unaffected and safe to bump to <code>0.5.58</code>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-verify">3. Verify<a href="https://caipe.io/blog/releases/release-0.5.58#3-verify" class="hash-link" aria-label="Direct link to 3. Verify" title="Direct link to 3. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<p>Check that any pod using the <code>mcp-webex</code> image actually pulled and started — an <code>ImagePullBackOff</code> there is the symptom of this known issue.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.58#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes required, aside from avoiding an explicit <code>mcp-webex:0.5.58</code> pin as described above.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.58#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.57 and 0.5.58.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.56 — Insights RBAC Scoping and AD Group Sync Filtering]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.56</id>
        <link href="https://caipe.io/blog/releases/release-0.5.56"/>
        <updated>2026-07-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-21]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-21
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.56</code>
Previous release: 0.5.55</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.56#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.56 tightens who can see what in Admin Insights: non-admins now only see data for resources they own, with a new agent filter to narrow further. Operators syncing Active Directory / OIDC groups into CAIPE teams can now include or exclude specific groups by regex instead of syncing every group a user belongs to. The MCP tool picker in the admin lab is now a searchable combobox instead of a plain dropdown, and two unreliable Insights stats (self-resolution, estimated hours saved) have been removed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.56#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-insights-owner-scoped-visibility-and-agent-filter">Admin Insights: owner-scoped visibility and agent filter<a href="https://caipe.io/blog/releases/release-0.5.56#admin-insights-owner-scoped-visibility-and-agent-filter" class="hash-link" aria-label="Direct link to Admin Insights: owner-scoped visibility and agent filter" title="Direct link to Admin Insights: owner-scoped visibility and agent filter" translate="no">​</a></h3>
<ul>
<li class="">Non-admin users now see Insights data only for resources they own — their readable Slack channels, their own web conversations, and agents they manage. Admins continue to see everything.</li>
<li class="">A new agent filter dropdown lets any user narrow Insights down to a specific agent; non-admins only see agents they own in the list.</li>
<li class="">Web chats now show up in the Top Agents leaderboard alongside Slack activity.</li>
</ul>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2209" target="_blank" rel="noopener noreferrer" class="">#2209</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ad--oidc-group-sync-filtering">AD / OIDC group sync filtering<a href="https://caipe.io/blog/releases/release-0.5.56#ad--oidc-group-sync-filtering" class="hash-link" aria-label="Direct link to AD / OIDC group sync filtering" title="Direct link to AD / OIDC group sync filtering" translate="no">​</a></h3>
<p>Two new environment variables control which Active Directory groups get synced into CAIPE teams from the OIDC <code>member_of</code> claim:</p>
<ul>
<li class=""><code>OIDC_GROUP_INCLUDELIST</code> — comma-separated regex patterns; only matching groups are synced. Unset means all groups are included (no change from prior behavior).</li>
<li class=""><code>OIDC_GROUP_EXCLUDELIST</code> — comma-separated regex patterns; matching groups are dropped, and any existing team membership from an excluded group is actively removed on the user's next login.</li>
</ul>
<p>Both lists can be combined — includelist is applied first, then excludelist.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2237" target="_blank" rel="noopener noreferrer" class="">#2237</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="service-accounts-full-org-admin-visibility">Service accounts: full org-admin visibility<a href="https://caipe.io/blog/releases/release-0.5.56#service-accounts-full-org-admin-visibility" class="hash-link" aria-label="Direct link to Service accounts: full org-admin visibility" title="Direct link to Service accounts: full org-admin visibility" translate="no">​</a></h3>
<p>Org admins can now see, search, and page through <strong>all</strong> service accounts in the platform, not just ones belonging to their own team.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="searchable-mcp-tool-picker">Searchable MCP tool picker<a href="https://caipe.io/blog/releases/release-0.5.56#searchable-mcp-tool-picker" class="hash-link" aria-label="Direct link to Searchable MCP tool picker" title="Direct link to Searchable MCP tool picker" translate="no">​</a></h3>
<p>The MCP tool picker in the admin lab is now a searchable combobox instead of a plain <code>&lt;select&gt;</code>, making it usable when a tool list is long.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.56#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>insights</strong>: removed the "self-resolution" and "estimated hours saved" stats — both were unreliable heuristics (guessing whether a thread was resolved by a human reply, then multiplying that guess by arbitrary time constants) presented as facts on the dashboard. (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2256" target="_blank" rel="noopener noreferrer" class="">#2256</a>)</li>
<li class=""><strong>agent context</strong>: fixed a timing issue where a signed agent-context grant for an MCP tool caller could be revoked before the caller had a chance to use it.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://caipe.io/blog/releases/release-0.5.56#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h2>
<ul>
<li class="">Shortened the local-context grant TTL used by the OpenFGA authorization bridge to 8 hours and corrected the audit object recorded for these grants.</li>
<li class="">Scoped down the GitHub App token used by the prebuild artifact-comment CI workflow to only the permissions the reconciler script actually needs (flagged by static analysis as over-broad). (<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2250" target="_blank" rel="noopener noreferrer" class="">#2250</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.56#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.55.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="known-issues">Known Issues<a href="https://caipe.io/blog/releases/release-0.5.56#known-issues" class="hash-link" aria-label="Direct link to Known Issues" title="Direct link to Known Issues" translate="no">​</a></h2>
<p>None known at this time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0555--0556">Upgrade Guide: 0.5.55 → 0.5.56<a href="https://caipe.io/blog/releases/release-0.5.56#upgrade-guide-0555--0556" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.55 → 0.5.56" title="Direct link to Upgrade Guide: 0.5.55 → 0.5.56" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.56#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in upgrade — no <code>values.yaml</code> edits required. The Helm chart's default values are unchanged between 0.5.55 and 0.5.56.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.56#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.55 and 0.5.56. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.56#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-chart-version">1. Update chart version<a href="https://caipe.io/blog/releases/release-0.5.56#1-update-chart-version" class="hash-link" aria-label="Direct link to 1. Update chart version" title="Direct link to 1. Update chart version" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.56 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-optional-configure-ad-group-sync-filtering">2. Optional: configure AD group sync filtering<a href="https://caipe.io/blog/releases/release-0.5.56#2-optional-configure-ad-group-sync-filtering" class="hash-link" aria-label="Direct link to 2. Optional: configure AD group sync filtering" title="Direct link to 2. Optional: configure AD group sync filtering" translate="no">​</a></h4>
<p>If you want to limit which AD/OIDC groups sync into CAIPE teams, set one or both new env vars on the UI deployment:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">OIDC_GROUP_INCLUDELIST</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"^caipe-.*,^platform-.*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">OIDC_GROUP_EXCLUDELIST</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"^contractors-.*"</span><br></span></code></pre></div></div>
<p>Leaving both unset preserves existing behavior — no action required to upgrade safely.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-verify">3. Verify<a href="https://caipe.io/blog/releases/release-0.5.56#3-verify" class="hash-link" aria-label="Direct link to 3. Verify" title="Direct link to 3. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="personal-impact-analysis">Personal Impact Analysis<a href="https://caipe.io/blog/releases/release-0.5.56#personal-impact-analysis" class="hash-link" aria-label="Direct link to Personal Impact Analysis" title="Direct link to Personal Impact Analysis" translate="no">​</a></h3>
<p>No <code>values.yaml</code> changes are required. If you rely on the Insights "self-resolution" or "estimated hours saved" cards, note that they are removed in this release and will no longer appear on the Admin Insights dashboard.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.56#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<p>No diff — <code>values.yaml</code> is identical between 0.5.55 and 0.5.56.</p>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.55 — Multiple Webex Bots and Per-Surface Default Agents]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.55</id>
        <link href="https://caipe.io/blog/releases/release-0.5.55"/>
        <updated>2026-07-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-17]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-17
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.55</code>
Previous release: 0.5.54</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.55#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.55 significantly expands the Webex integration: a single deployment can now host multiple distinct Webex bots, each routing to different agents and enforcing independent direct-message access policies. Separately, users can now set independent default agents for the web interface, Slack, and Webex rather than sharing one platform-wide DM default.</p>
<p><strong>Webex bot operators:</strong> this release changes the bot configuration format. See the upgrade guide for migration steps.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.55#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="multiple-webex-bots-on-one-deployment">Multiple Webex bots on one deployment<a href="https://caipe.io/blog/releases/release-0.5.55#multiple-webex-bots-on-one-deployment" class="hash-link" aria-label="Direct link to Multiple Webex bots on one deployment" title="Direct link to Multiple Webex bots on one deployment" translate="no">​</a></h3>
<p>Operators can now configure any number of Webex bot identities within a single platform deployment. Each bot is independent:</p>
<ul>
<li class="">Routes its group spaces to a designated agent and team.</li>
<li class="">Enforces its own direct-message access policy: <code>disabled</code>, <code>allowlist</code>, or open to all users.</li>
<li class="">Carries its own bot token, so each identity authenticates separately.</li>
</ul>
<p>This makes it possible, for example, to have a general-purpose bot in shared spaces and a restricted bot for a specific team — both running on the same platform.</p>
<p><strong>Legacy migration</strong>: Existing space-to-agent assignments created before this release do not carry a bot identity. A <strong>Legacy Migration</strong> tab in the Admin UI lists all spaces in this state so operators can assign them to the correct bot before cutting over.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2184" target="_blank" rel="noopener noreferrer" class="">#2184</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="per-surface-default-agents">Per-surface default agents<a href="https://caipe.io/blog/releases/release-0.5.55#per-surface-default-agents" class="hash-link" aria-label="Direct link to Per-surface default agents" title="Direct link to Per-surface default agents" translate="no">​</a></h3>
<p>Users can now set independent default agents for each surface they use:</p>
<ul>
<li class=""><strong>Web</strong> — the agent that opens when starting a new conversation in the browser.</li>
<li class=""><strong>Slack</strong> — the agent that handles direct messages to the Slack bot.</li>
<li class=""><strong>Webex</strong> — the agent that handles direct messages to a Webex bot.</li>
</ul>
<p>Slack and Webex selectors appear only when those integrations are active on the platform. The platform-wide default remains the fallback for any surface without a personal preference. Admins set the platform default from Admin &gt; Settings &gt; Agents.</p>
<p>The legacy shared DM default is retired. Existing selections fall back to the platform default automatically; an optional cleanup migration is available from the Admin tracked-migrations UI.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2233" target="_blank" rel="noopener noreferrer" class="">#2233</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.55#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="webex-bot-configuration-format-changed">Webex bot configuration format changed<a href="https://caipe.io/blog/releases/release-0.5.55#webex-bot-configuration-format-changed" class="hash-link" aria-label="Direct link to Webex bot configuration format changed" title="Direct link to Webex bot configuration format changed" translate="no">​</a></h3>
<p>The previous flat env-var approach for Webex bot defaults (<code>WEBEX_DEFAULT_TEAM_SLUG</code>, <code>WEBEX_DEFAULT_AGENT_ID</code>, <code>WEBEX_AUTO_ASSIGN_UNMAPPED_SPACES</code>) is replaced by a structured <code>bots</code> array in Helm values. See the upgrade guide below.</p>
<p><strong>This only affects deployments with <code>tags.webex-bot: true</code>.</strong> Deployments that do not run the Webex bot are unaffected.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0554--0555">Upgrade Guide: 0.5.54 → 0.5.55<a href="https://caipe.io/blog/releases/release-0.5.55#upgrade-guide-0554--0555" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.54 → 0.5.55" title="Direct link to Upgrade Guide: 0.5.54 → 0.5.55" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.55#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="webex-bot-multi-bot-configuration-breaking-for-webex-bot-users">Webex bot multi-bot configuration (breaking for webex-bot users)<a href="https://caipe.io/blog/releases/release-0.5.55#webex-bot-multi-bot-configuration-breaking-for-webex-bot-users" class="hash-link" aria-label="Direct link to Webex bot multi-bot configuration (breaking for webex-bot users)" title="Direct link to Webex bot multi-bot configuration (breaking for webex-bot users)" translate="no">​</a></h4>
<p>The following env vars are <strong>removed</strong> from the <code>webex-bot</code> subchart:</p>
<table><thead><tr><th>Removed key</th><th>Replacement</th></tr></thead><tbody><tr><td><code>WEBEX_DEFAULT_TEAM_SLUG</code></td><td><code>webex-bot.bots[*].spaces.defaultTeamSlug</code></td></tr><tr><td><code>WEBEX_DEFAULT_AGENT_ID</code></td><td><code>webex-bot.bots[*].spaces.defaultAgentId</code> or <code>webex-bot.bots[*].directMessages.defaultAgentId</code></td></tr><tr><td><code>WEBEX_AUTO_ASSIGN_UNMAPPED_SPACES</code></td><td>replaced by per-bot <code>spaces.accessMode</code></td></tr></tbody></table>
<p>The new configuration uses a <code>bots</code> array. Each entry describes one bot identity:</p>
<p><strong>Before (0.5.54)</strong>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">webex-bot</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">WEBEX_DEFAULT_TEAM_SLUG</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"platform"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">WEBEX_DEFAULT_AGENT_ID</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"agent-platform"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">WEBEX_AUTO_ASSIGN_UNMAPPED_SPACES</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"false"</span><br></span></code></pre></div></div>
<p><strong>After (0.5.55)</strong>:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">webex-bot</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">bots</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"primary"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Platform Bot"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">tokenEnv</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"WEBEX_BOT_TOKEN"</span><span class="token plain">   </span><span class="token comment" style="color:rgb(98, 114, 164)"># env var holding the bot token in your secret</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">spaces</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">accessMode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"all_spaces"</span><span class="token plain">       </span><span class="token comment" style="color:rgb(98, 114, 164)"># or "allowlist"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">defaultTeamSlug</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"platform"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">defaultAgentId</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"agent-platform"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">directMessages</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">accessMode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"all_users"</span><span class="token plain">        </span><span class="token comment" style="color:rgb(98, 114, 164)"># or "disabled" or "allowlist"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">defaultAgentId</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"agent-platform"</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="per-surface-default-agent-migration-optional">Per-surface default agent migration (optional)<a href="https://caipe.io/blog/releases/release-0.5.55#per-surface-default-agent-migration-optional" class="hash-link" aria-label="Direct link to Per-surface default agent migration (optional)" title="Direct link to Per-surface default agent migration (optional)" translate="no">​</a></h4>
<p>The legacy <code>dm_default_agent_id</code> field in user preferences is retired. Existing values fall back to the platform default automatically — no action required. To clean up the retired field from the database, run the <strong><code>user_preferences_default_agent_cleanup_v1</code></strong> migration from Admin &gt; Tracked Migrations after upgrading.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.55#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-update-your-valuesyaml">1. Update your values.yaml<a href="https://caipe.io/blog/releases/release-0.5.55#1-update-your-valuesyaml" class="hash-link" aria-label="Direct link to 1. Update your values.yaml" title="Direct link to 1. Update your values.yaml" translate="no">​</a></h4>
<p>If you run the Webex bot (<code>tags.webex-bot: true</code>), replace the removed env vars with the new <code>bots</code> array as shown above.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-upgrade-the-chart">2. Upgrade the chart<a href="https://caipe.io/blog/releases/release-0.5.55#2-upgrade-the-chart" class="hash-link" aria-label="Direct link to 2. Upgrade the chart" title="Direct link to 2. Upgrade the chart" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.55 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-assign-legacy-webex-spaces-webex-bot-only">3. Assign legacy Webex spaces (Webex bot only)<a href="https://caipe.io/blog/releases/release-0.5.55#3-assign-legacy-webex-spaces-webex-bot-only" class="hash-link" aria-label="Direct link to 3. Assign legacy Webex spaces (Webex bot only)" title="Direct link to 3. Assign legacy Webex spaces (Webex bot only)" translate="no">​</a></h4>
<p>After the upgrade, open Admin &gt; Integrations &gt; Legacy Migration and assign any unattributed spaces to the correct bot.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-verify">4. Verify<a href="https://caipe.io/blog/releases/release-0.5.55#4-verify" class="hash-link" aria-label="Direct link to 4. Verify" title="Direct link to 4. Verify" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-values-diff">Full Values Diff<a href="https://caipe.io/blog/releases/release-0.5.55#full-values-diff" class="hash-link" aria-label="Direct link to Full Values Diff" title="Direct link to Full Values Diff" translate="no">​</a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Raw diff (0.5.54 → 0.5.55)</summary><div><div class="collapsibleContent_i85q"><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    WEBEX_DEFAULT_TEAM_SLUG: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    WEBEX_DEFAULT_AGENT_ID: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    WEBEX_THREAD_CONTEXT_ENABLED: "true"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    WEBEX_THREAD_CONTEXT_MAX_MESSAGES: "10"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    WEBEX_THREAD_CONTEXT_MAX_CHARS: "4000"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    WEBEX_AUTO_ASSIGN_UNMAPPED_SPACES: "false"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    WEBEX_DEFAULT_TEAM_SLUG: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">    WEBEX_DEFAULT_AGENT_ID: ""</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">  # One runtime pod can host multiple bot identities. Each bot owns its group</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">  # space and direct-message policy. Automatic modes require both defaults.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">  bots: []</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    # - id: "primary"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #   name: "Primary bot"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #   tokenEnv: "PRIMARY_WEBEX_BOT_TOKEN"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #   spaces:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #     accessMode: "all_spaces"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #     defaultTeamSlug: "platform"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #     defaultAgentId: "agent-platform"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #   directMessages:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #     accessMode: "all_users"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">    #     defaultAgentId: "agent-personal"</span><br></span></code></pre></div></div></div></div></details>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Shubham Bakshi</name>
            <uri>https://github.com/subbaksh</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.54 — Admin Access Preview and Slack Bot Reliability]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.54</id>
        <link href="https://caipe.io/blog/releases/release-0.5.54"/>
        <updated>2026-07-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-16]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-16
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.54</code>
Previous release: 0.5.53</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.54#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.54 delivers a fully rebuilt admin access preview that accurately simulates what any user or team can see without touching their session, consolidates default agent settings into a single organized surface, and fixes a set of Slack bot reliability issues that were causing escalation and on-call flows to fail silently.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.54#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-access-preview-rebuilt">Admin access preview rebuilt<a href="https://caipe.io/blog/releases/release-0.5.54#admin-access-preview-rebuilt" class="hash-link" aria-label="Direct link to Admin access preview rebuilt" title="Direct link to Admin access preview rebuilt" translate="no">​</a></h3>
<p>The <strong>View As</strong> mode in Admin now provides an accurate, read-only simulation of any user or team's effective access. The admin's own session is never modified — no target-user token is minted, and no state is altered. The preview reflects the selected subject's navigation access, data visibility, and team membership exactly as they would experience it.</p>
<p>Administrators can switch preview subjects without stale data from the previous subject carrying over.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2218" target="_blank" rel="noopener noreferrer" class="">#2218</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="consolidated-default-agent-settings">Consolidated default agent settings<a href="https://caipe.io/blog/releases/release-0.5.54#consolidated-default-agent-settings" class="hash-link" aria-label="Direct link to Consolidated default agent settings" title="Direct link to Consolidated default agent settings" translate="no">​</a></h3>
<p>The Settings surface now has a single <strong>Default Agent</strong> card. Each user can set a personal default for the web interface via a compact dropdown, and administrators see a clearly separated section for platform-wide controls. The platform default is shown as the fallback option in the personal selector, so the effective resolution is always visible.</p>
<p>The Import Agents action moves into the admin-only Agents tab, where it belongs.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2218" target="_blank" rel="noopener noreferrer" class="">#2218</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="animated-tab-navigation">Animated tab navigation<a href="https://caipe.io/blog/releases/release-0.5.54#animated-tab-navigation" class="hash-link" aria-label="Direct link to Animated tab navigation" title="Direct link to Animated tab navigation" translate="no">​</a></h3>
<p>Tab selectors across the Admin surface now animate smoothly using a shared measured indicator. The indicator moves between tabs on the same navigation level without stretching or jitter. A reduced-motion preference disables the animation. Keyboard and accessibility behavior is unchanged.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2217" target="_blank" rel="noopener noreferrer" class="">#2217</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.54#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-user-list-performance">Admin user list performance<a href="https://caipe.io/blog/releases/release-0.5.54#admin-user-list-performance" class="hash-link" aria-label="Direct link to Admin user list performance" title="Direct link to Admin user list performance" translate="no">​</a></h3>
<p>The Users and Teams admin page no longer fetches all members and then filters in the browser. Lookups are now paginated and scoped to the team in Mongo and Keycloak, which significantly reduces load time for organizations with large user bases.</p>
<ul>
<li class="">Team membership index is created at service startup rather than via a migration step.</li>
<li class="">Team-scoped Keycloak lookups are paginated to avoid hitting response size limits.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-bot-escalation-and-feedback-reliability">Slack bot escalation and feedback reliability<a href="https://caipe.io/blog/releases/release-0.5.54#slack-bot-escalation-and-feedback-reliability" class="hash-link" aria-label="Direct link to Slack bot escalation and feedback reliability" title="Direct link to Slack bot escalation and feedback reliability" translate="no">​</a></h3>
<p>Several Slack bot action handlers — feedback, retry, escalation — were failing because they could not resolve which conversation to associate the action with. The fixes ensure the correct conversation identity is resolved before any downstream call:</p>
<ul>
<li class="">Modal submit handlers now read the conversation reference from the correct field in the submission payload.</li>
<li class="">Feedback, retry, and escalation handlers attach the correct access token before making downstream calls.</li>
<li class="">On-call lookup via escalation paths now registers the conversation first, preventing dropped events when the lookup fires before the conversation exists.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.54#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.53.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0553--0554">Upgrade Guide: 0.5.53 → 0.5.54<a href="https://caipe.io/blog/releases/release-0.5.54#upgrade-guide-0553--0554" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.53 → 0.5.54" title="Direct link to Upgrade Guide: 0.5.53 → 0.5.54" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.54#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.53 and 0.5.54. Drop-in upgrade.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.54#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.54 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.52 — Deep Links, Session Refresh Fix, Slack Escalation Fix, Configurable Metrics Port]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.52-patch</id>
        <link href="https://caipe.io/blog/releases/release-0.5.52-patch"/>
        <updated>2026-07-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-15]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-15
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.52</code>
Previous release: 0.5.51</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.52-patch#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.52 adds deep links across the Agents surface so resource editors can be shared and bookmarked, fixes a session expiry bug that was logging users out despite a successful silent refresh, corrects Slack escalation and message-delete failures caused by a missing <code>agent_id</code>, and makes the dynamic-agents Prometheus metrics port configurable.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.52-patch#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="deep-links-for-agent-resources">Deep links for agent resources<a href="https://caipe.io/blog/releases/release-0.5.52-patch#deep-links-for-agent-resources" class="hash-link" aria-label="Direct link to Deep links for agent resources" title="Direct link to Deep links for agent resources" translate="no">​</a></h3>
<p>The Agents surface now uses URL-backed deep links throughout, so resource editors can be shared, refreshed, and navigated with browser history.</p>
<ul>
<li class="">Agents: <code>?tab=agents&amp;agent=&lt;id&gt;&amp;step=&lt;step&gt;</code></li>
<li class="">MCP Servers: <code>?tab=mcp-servers&amp;server=&lt;id&gt;</code></li>
<li class="">LLM Models: <code>?tab=llm-models&amp;model=&lt;id&gt;</code></li>
</ul>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2212" target="_blank" rel="noopener noreferrer" class="">#2212</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dynamic-agents-prometheus-metrics-port-configurable">Dynamic-agents Prometheus metrics port configurable<a href="https://caipe.io/blog/releases/release-0.5.52-patch#dynamic-agents-prometheus-metrics-port-configurable" class="hash-link" aria-label="Direct link to Dynamic-agents Prometheus metrics port configurable" title="Direct link to Dynamic-agents Prometheus metrics port configurable" translate="no">​</a></h3>
<p>A new <code>METRICS_PORT</code> env var (and corresponding Helm value) lets the dynamic-agents Prometheus <code>/metrics</code> endpoint be served on a dedicated port, separate from the main API port. This unblocks running the main API port under strict mTLS while keeping the metrics endpoint accessible to Prometheus without mTLS.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2135" target="_blank" rel="noopener noreferrer" class="">#2135</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.52-patch#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-silent-refresh-failures-no-longer-force-logout">Session silent-refresh failures no longer force logout<a href="https://caipe.io/blog/releases/release-0.5.52-patch#session-silent-refresh-failures-no-longer-force-logout" class="hash-link" aria-label="Direct link to Session silent-refresh failures no longer force logout" title="Direct link to Session silent-refresh failures no longer force logout" translate="no">​</a></h3>
<p><code>TokenExpiryGuard</code> was treating any transient silent-refresh failure as a terminal logout trigger. Users in <code>caipe-preview</code> environments were being kicked out and forced to sign in again despite the UI banner claiming a refresh was in progress. The guard now tolerates transient failures and only forces logout after exhausting retries.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2220" target="_blank" rel="noopener noreferrer" class="">#2220</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-escalation-and-message-delete-no-longer-fail-with-http-400">Slack escalation and message-delete no longer fail with HTTP 400<a href="https://caipe.io/blog/releases/release-0.5.52-patch#slack-escalation-and-message-delete-no-longer-fail-with-http-400" class="hash-link" aria-label="Direct link to Slack escalation and message-delete no longer fail with HTTP 400" title="Direct link to Slack escalation and message-delete no longer fail with HTTP 400" translate="no">​</a></h3>
<p><code>_resolve_conversation_id</code> performs a get-or-create lookup keyed by <code>thread_ts</code>, but the conversation-creation API validates that <code>agent_id</code> is non-empty before reaching the lookup. The Slack bot's "Get help" escalation and message-delete handlers were calling <code>_resolve_conversation_id</code> without passing <code>agent_id</code>, causing an HTTP 400 on every call. The <code>agent_id</code> is now passed correctly in both handlers.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2222" target="_blank" rel="noopener noreferrer" class="">#2222</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="admin-view-as-access-preview-repaired">Admin view-as access preview repaired<a href="https://caipe.io/blog/releases/release-0.5.52-patch#admin-view-as-access-preview-repaired" class="hash-link" aria-label="Direct link to Admin view-as access preview repaired" title="Direct link to Admin view-as access preview repaired" translate="no">​</a></h3>
<p>The Admin <strong>View as</strong> flow now provides an accurate read-only access preview. The previous implementation was showing an opaque user ID or blank page. The fix uses access simulation (not session impersonation) — the signed-in admin session is unchanged, no target-user token is minted, and no session state is altered.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2206" target="_blank" rel="noopener noreferrer" class="">#2206</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="unlinked-access-modal-scrolls-instead-of-overflowing">Unlinked access modal scrolls instead of overflowing<a href="https://caipe.io/blog/releases/release-0.5.52-patch#unlinked-access-modal-scrolls-instead-of-overflowing" class="hash-link" aria-label="Direct link to Unlinked access modal scrolls instead of overflowing" title="Direct link to Unlinked access modal scrolls instead of overflowing" translate="no">​</a></h3>
<p>The "Unlinked Access" modal (Platform Settings tab) now wraps its scopes list and add-scope form in a scrollable container (<code>max-h-[65vh] overflow-y-auto</code>) instead of growing the dialog past the viewport.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2224" target="_blank" rel="noopener noreferrer" class="">#2224</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.52-patch#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.51.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0551--0552">Upgrade Guide: 0.5.51 → 0.5.52<a href="https://caipe.io/blog/releases/release-0.5.52-patch#upgrade-guide-0551--0552" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.51 → 0.5.52" title="Direct link to Upgrade Guide: 0.5.51 → 0.5.52" translate="no">​</a></h2>
<p>No values changes required unless you want to configure a dedicated metrics port:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">dynamic-agents</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">METRICS_PORT</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"9090"</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.52 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Shubham Bakshi</name>
            <uri>https://github.com/subbaksh</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.4.18 → 0.5.52 Upgrade Guide — Workflow Engine, Webex Bot, BYO Credentials, Custom Agents, Fine-Grained Authorization, and Scheduled Agents]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.52-upgrade-guide</id>
        <link href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide"/>
        <updated>2026-07-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-15]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-15
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.52</code>
Previous release: 0.4.18</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.52 marks a major milestone for the platform. The 0.5.x series ships six headline capabilities that fundamentally expand what you can build and how the platform governs access: a new agentic workflow engine, a configurable Webex bot, bring-your-own credentials and impersonation tokens for MCP servers, fully custom agent definitions, relationship-based fine-grained authorization, and agent-driven scheduled jobs. This post summarizes what changed from 0.4.18 to 0.5.52.</p>
<p>The entire authorization stack ships <strong>disabled by default</strong> — upgrading from 0.4.18 requires no <code>values.yaml</code> changes if you are not opting into RBAC, Webex, or credentials.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="workflow-engine">Workflow Engine<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#workflow-engine" class="hash-link" aria-label="Direct link to Workflow Engine" title="Direct link to Workflow Engine" translate="no">​</a></h3>
<p>The platform now ships a first-class workflow engine backed by LangGraph. You can build multi-step agentic workflows that fan out to sub-agents, pause for human approval, and resume — all tracked in a live UI timeline.</p>
<ul>
<li class=""><strong>Inline human-in-the-loop (HITL)</strong>: When a workflow reaches a <code>waiting_for_input</code> state, the approval form renders directly inside the chat card. No navigation required.</li>
<li class=""><strong>Subagent timeline correlation</strong>: Each sub-agent's output is pinned to its triggering step so you can trace execution at a glance.</li>
<li class=""><strong>Workflow run sharing</strong>: Share a run with one or more teams for collaborative debugging. Team members can view and resume shared runs through the same OpenFGA access model used everywhere else.</li>
<li class=""><strong>Non-admin workflow creation</strong>: Team members can create, edit, and run workflows scoped to their team without platform-wide grants.</li>
<li class=""><strong>Live status in chat</strong>: When an agent kicks off a workflow, the chat response includes a direct link to the run and polls for live status updates.</li>
</ul>
<p>The previous Task Builder tab is superseded by the new workflow engine. The legacy standalone supervisor and A2A agents are removed; all routing now flows through the dynamic agent layer.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="customizable-webex-bot">Customizable Webex Bot<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#customizable-webex-bot" class="hash-link" aria-label="Direct link to Customizable Webex Bot" title="Direct link to Customizable Webex Bot" translate="no">​</a></h3>
<p>A full Webex bot integration ships as a first-class platform component.</p>
<ul>
<li class=""><strong>Space-to-agent routing</strong>: Webex spaces can be onboarded directly to an agent and team from the Integrations tab, with no admin involvement required for team members.</li>
<li class=""><strong>Bulk onboarding</strong>: Admins can assign multiple spaces to agents in a single step.</li>
<li class=""><strong>Markdown support</strong>: The bot renders rich markdown responses from agents natively.</li>
<li class=""><strong>Run As identity</strong>: Spaces can be configured to send messages as a named service account, giving you a consistent, auditable identity across bot-driven conversations.</li>
<li class=""><strong>Prometheus metrics</strong>: Bot activity is exposed for scraping out of the box.</li>
<li class=""><strong>Helm subchart</strong>: The bot is packaged as a first-class subchart and disabled by default (<code>tags.webex-bot: false</code>).</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="byo-credentials-and-impersonation-for-mcp-servers">BYO Credentials and Impersonation for MCP Servers<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#byo-credentials-and-impersonation-for-mcp-servers" class="hash-link" aria-label="Direct link to BYO Credentials and Impersonation for MCP Servers" title="Direct link to BYO Credentials and Impersonation for MCP Servers" translate="no">​</a></h3>
<p>You can now bring your own credentials to MCP tool calls — either as personal OAuth tokens, service account credentials, or PKCE public-client flows for integrations that don't support a fixed scope.</p>
<ul>
<li class=""><strong>Envelope-encrypted credential store</strong>: Credentials are stored with AES-GCM envelope encryption and KMS-style data-key wrapping in MongoDB. AWS KMS is the recommended key provider for production.</li>
<li class=""><strong>Pin OAuth connections to MCP servers</strong>: When adding a custom MCP server (GitHub, Jira, Confluence, etc.), attach an OAuth provider connection directly. The platform forwards those credentials automatically on every tool call.</li>
<li class=""><strong>PKCE public-client OAuth</strong>: For integrations where a fixed MCP connection scope is not appropriate, the user's OAuth session scope is used directly.</li>
<li class=""><strong>Service account credential passthrough</strong>: Service accounts carry their own credentials into tool calls so integrations authenticate with the service account's token, not the invoking user's.</li>
<li class=""><strong>Impersonation tokens</strong>: The platform uses Keycloak token exchange (<code>requested_subject</code> impersonation) so scheduled and automated runs execute as the owning user — access enforcement is identical to interactive runs.</li>
<li class=""><strong>Fail-closed enforcement</strong>: If a caller-scoped MCP tool requires OAuth credentials and none are present, the request fails with a clear message rather than silently proceeding.</li>
</ul>
<p>Enable with <code>CAIPE_CREDENTIALS_ENABLED: "true"</code> and set <code>CREDENTIAL_KEY_PROVIDER: "aws-kms"</code> for production.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="custom-agents">Custom Agents<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#custom-agents" class="hash-link" aria-label="Direct link to Custom Agents" title="Direct link to Custom Agents" translate="no">​</a></h3>
<p>The dynamic agents runtime is now the sole routing layer for the platform. You can define, deploy, and manage agents entirely from the UI without writing code or modifying Helm values.</p>
<ul>
<li class=""><strong>Full CRUD from the UI</strong>: Create agents with a system prompt, LLM config, and MCP tool selection. Agents are persisted in MongoDB and take effect immediately.</li>
<li class=""><strong>MCP endpoint normalizer</strong>: Agent configs accept bare hostnames, trailing-slash URLs, or missing <code>/mcp</code> suffixes — the platform canonicalizes them automatically.</li>
<li class=""><strong>Editor blocker hints</strong>: The agent editor surfaces actionable hints when required configuration is missing, and blocks deletion of the platform default agent.</li>
<li class=""><strong>Hello-World seed agent</strong>: Fresh installs auto-provision a working Hello-World agent and a default team so the platform is usable on first login.</li>
<li class=""><strong>Agent owner access</strong>: Agent owners and their team members get full manage access automatically — no explicit admin grant required.</li>
<li class=""><strong>MCP permissions panel</strong>: Each MCP server shows which teams and users have access, with grant management inline.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="fine-grained-authorization">Fine-Grained Authorization<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#fine-grained-authorization" class="hash-link" aria-label="Direct link to Fine-Grained Authorization" title="Direct link to Fine-Grained Authorization" translate="no">​</a></h3>
<p>The platform ships a complete relationship-based access control (ReBAC) stack backed by <a href="https://openfga.dev/" target="_blank" rel="noopener noreferrer" class="">OpenFGA</a> and Keycloak. Every access decision — agents, knowledge bases, MCP tools, workflows, credentials — flows through a single authorization service.</p>
<ul>
<li class=""><strong>OpenFGA is the source of truth</strong>: Team resource access for agents, knowledge bases, tools, and skills is read exclusively from OpenFGA. The admin team UI reflects only what FGA knows.</li>
<li class=""><strong>Keycloak identity</strong>: Keycloak acts as the identity provider with realm-init, token-exchange, and auth-reconcile jobs bundled in the chart.</li>
<li class=""><strong>AgentGateway ext_authz bridge</strong>: The AgentGateway proxy enforces per-call MCP authorization decisions before requests reach backend tools.</li>
<li class=""><strong>Admin UI for access management</strong>: A team-centric view of user access lets admins see who can reach what through the lens of team membership — no need to understand the underlying authorization model. An access explorer and RBAC self-check tool help diagnose permission issues.</li>
<li class=""><strong>Okta / LDAP directory sync</strong>: Group sync runs on a configurable schedule, JIT-provisions users on login, and reconciles OpenFGA tuples transactionally so large-org syncs (hundreds of groups) complete without crashing.</li>
<li class=""><strong>Per-document RAG ACLs</strong>: Knowledge base access is governed by OpenFGA with per-document enforcement at retrieval time.</li>
<li class=""><strong>Stale grant cleanup</strong>: Stale RBAC principals and grants are removed automatically on sync.</li>
<li class=""><strong>Centralized Authorization Service (CAS)</strong>: A dedicated component (0.5.12+) makes permission checks faster and more consistent across agents, workflows, and MCP tools.</li>
</ul>
<p>The entire stack ships <strong>disabled by default</strong>. Enable with:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">tags.keycloak</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">openfga.enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">openfgaAuthzBridge.enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">global.agentgateway.enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><br></span></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scheduled-agents">Scheduled Agents<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#scheduled-agents" class="hash-link" aria-label="Direct link to Scheduled Agents" title="Direct link to Scheduled Agents" translate="no">​</a></h3>
<p>Agents can now create, manage, and run scheduled jobs without manual intervention.</p>
<ul>
<li class=""><strong>Scheduler MCP server</strong>: A new <code>mcp-scheduler</code> tool exposes create, list, update, and delete operations for scheduled jobs. Each job is owned by the creating user — only they (or their team members) can manage it.</li>
<li class=""><strong>Kubernetes CronJob backend</strong>: Each schedule maps to a Kubernetes CronJob in the platform namespace. The <code>caipe-cron-runner</code> pod fires once per schedule interval and exits.</li>
<li class=""><strong>Owner impersonation on execution</strong>: The scheduler uses Keycloak token exchange to mint a real owner-user bearer on each firing. Access enforcement (<code>agent#use</code>) is identical to an interactive run — if the owner's access was revoked, the run fails closed.</li>
<li class=""><strong>Conversation history</strong>: Each scheduled run creates a Web UI conversation owned by the schedule's creator, so all runs are visible in chat history.</li>
<li class=""><strong>One-shot and recurring</strong>: Schedules support both standard cron expressions (recurring) and delayed one-off jobs with optional retry metadata.</li>
</ul>
<p>Enable with:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">scheduler</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><br></span></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h2>
<ul>
<li class="">Keycloak client secrets for service-account clients rotate on every <code>helm install</code>/<code>upgrade</code>. Strict-mode gate (<code>keycloak.strictClientSecrets</code>) fails the install if dev placeholders are still in use.</li>
<li class="">BFF no longer falls back to <code>admin/admin</code> against Keycloak — production requires the <code>client_credentials</code> path and fails loudly otherwise.</li>
<li class="">Demo users with hardcoded passwords removed from the bundled realm config.</li>
<li class="">SSRF protections added to web ingestors (non-public URLs rejected).</li>
<li class="">Dependency pins: <code>aiohttp</code>, <code>websockets</code>, <code>@aws-sdk/client-kms</code>, <code>protobuf</code>, <code>qs</code>.</li>
<li class="">NoSQL injection fixes in the admin API surface.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p><strong>No breaking Helm values changes</strong> from 0.4.18 to 0.5.52 for operators who are not opting into RBAC, Webex, or credentials. All new configuration is additive with working defaults.</p>
<p>Two behavioral notes:</p>
<ol>
<li class="">
<p><strong><code>active_team</code> JWT claim removed</strong> — replaced by channel-derived team binding. Operators upgrading from 0.4.18 are unaffected (the claim was never issued by that release). Any external code that inspected <code>active_team</code> on a CAIPE-issued JWT should switch to reading the channel/space context.</p>
</li>
<li class="">
<p><strong>Legacy supervisor and standalone A2A agents removed</strong> — if your <code>values.yaml</code> references those components, the entries can be dropped. Dynamic agents are the supported routing layer from 0.5.22 onward.</p>
</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade">Upgrade<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.52 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>
<p>For the full incremental upgrade path with per-release values diffs, see the individual release notes for <a href="https://cnoe.io/blog/release-0.5.0" target="_blank" rel="noopener noreferrer" class="">0.5.0</a> through <a href="https://cnoe.io/blog/release-0.5.45" target="_blank" rel="noopener noreferrer" class="">0.5.45</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0418--0552">Upgrade Guide: 0.4.18 → 0.5.52<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#upgrade-guide-0418--0552" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.4.18 → 0.5.52" title="Direct link to Upgrade Guide: 0.4.18 → 0.5.52" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h3>
<p>Drop-in for stock 0.4.18 deployments. Every new capability is additive and gated behind a feature flag that defaults to disabled. The only required review is whether your <code>values.yaml</code> references the legacy supervisor or standalone A2A agents (safe to remove).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="recommended-adoption-sequence">Recommended adoption sequence<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#recommended-adoption-sequence" class="hash-link" aria-label="Direct link to Recommended adoption sequence" title="Direct link to Recommended adoption sequence" translate="no">​</a></h3>
<table><thead><tr><th>Step</th><th>What to enable</th><th>Key values</th></tr></thead><tbody><tr><td>1</td><td>Dynamic agents (already default)</td><td>No change</td></tr><tr><td>2</td><td>RBAC + OpenFGA</td><td><code>tags.keycloak</code>, <code>openfga.enabled</code>, <code>openfgaAuthzBridge.enabled</code>, <code>global.agentgateway.enabled</code></td></tr><tr><td>3</td><td>Webex bot</td><td><code>tags.webex-bot: true</code></td></tr><tr><td>4</td><td>Credentials store</td><td><code>CAIPE_CREDENTIALS_ENABLED: "true"</code>, <code>CREDENTIAL_KEY_PROVIDER: "aws-kms"</code></td></tr><tr><td>5</td><td>Scheduler</td><td><code>scheduler.enabled: true</code></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-keys-to-drop">Helm Values: keys to drop<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#helm-values-keys-to-drop" class="hash-link" aria-label="Direct link to Helm Values: keys to drop" title="Direct link to Helm Values: keys to drop" translate="no">​</a></h3>
<p>If present in your <code>values.yaml</code>, these are now no-ops and can be removed:</p>
<ul>
<li class="">Any supervisor (<code>supervisor.*</code>) config</li>
<li class=""><code>a2a-agents.*</code> standalone agent entries</li>
<li class=""><code>AGENT_GATEWAY_MCP_SERVER_IDS: "jira"</code> (no longer needed — AgentGateway handles routing based on profile)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="data-migrations">Data Migrations<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#data-migrations" class="hash-link" aria-label="Direct link to Data Migrations" title="Direct link to Data Migrations" translate="no">​</a></h3>
<p>No MongoDB schema migrations are required for the drop-in path. If enabling RBAC, the OpenFGA init job bootstraps the authorization model and backfills existing tuples automatically on first run.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="verify">Verify<a href="https://caipe.io/blog/releases/release-0.5.52-upgrade-guide#verify" class="hash-link" aria-label="Direct link to Verify" title="Direct link to Verify" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl get pods </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-n</span><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token plain">namespace</span><span class="token operator">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Send a test chat message and confirm a normal response</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Shubham Bakshi</name>
            <uri>https://github.com/subbaksh</uri>
        </author>
        <author>
            <name>Sunny Whang</name>
            <uri>https://github.com/suwhang-cisco</uri>
        </author>
        <author>
            <name>David Bouchare</name>
            <uri>https://github.com/dabcoder</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.53 — Configurable Session Lifetime and Deprecated-Agent Recovery]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.53</id>
        <link href="https://caipe.io/blog/releases/release-0.5.53"/>
        <updated>2026-07-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-15]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-15
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.53</code>
Previous release: 0.5.52</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.53#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.53 extends default SSO session lifetimes so users are no longer signed out after eight hours of inactivity, and improves the experience when an agent has been deprecated — users can now pick a replacement or pick up a conversation where they left off without losing context.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.53#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="longer-default-session-lifetime">Longer default session lifetime<a href="https://caipe.io/blog/releases/release-0.5.53#longer-default-session-lifetime" class="hash-link" aria-label="Direct link to Longer default session lifetime" title="Direct link to Longer default session lifetime" translate="no">​</a></h3>
<p>The default Keycloak SSO session lifetime increases from 8 hours idle / 24 hours maximum to <strong>7 days idle / 14 days maximum</strong>. Users who authenticate via an external identity provider (such as Duo SSO) are no longer forced to sign in again each day as long as they stay active within the window.</p>
<p>The idle timeout resets on each page visit, so a working user will not be interrupted. Operators can tune the values to match their organization's policy without modifying the chart — see the upgrade guide below.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecated-agent-recovery">Deprecated-agent recovery<a href="https://caipe.io/blog/releases/release-0.5.53#deprecated-agent-recovery" class="hash-link" aria-label="Direct link to Deprecated-agent recovery" title="Direct link to Deprecated-agent recovery" translate="no">​</a></h3>
<p>When a conversation is linked to an agent that has since been deprecated, the UI now shows the full conversation history and offers two clear recovery paths:</p>
<ul>
<li class=""><strong>Choose agent</strong> — opens the agent selector so the user can link the conversation to a different agent and continue.</li>
<li class=""><strong>Resume with default agent</strong> — re-links to the platform default in one click.</li>
</ul>
<p>Previously, deprecated-agent conversations showed a partial view with no clear way forward.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.53#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<ul>
<li class=""><strong>Session recovery</strong>: Clearing a stale auth flag on successful token recovery prevents a stale error state from appearing after silent refresh completes.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.53#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.52.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0552--0553">Upgrade Guide: 0.5.52 → 0.5.53<a href="https://caipe.io/blog/releases/release-0.5.53#upgrade-guide-0552--0553" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.52 → 0.5.53" title="Direct link to Upgrade Guide: 0.5.52 → 0.5.53" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-values-changes">Helm Values Changes<a href="https://caipe.io/blog/releases/release-0.5.53#helm-values-changes" class="hash-link" aria-label="Direct link to Helm Values Changes" title="Direct link to Helm Values Changes" translate="no">​</a></h3>
<p>No Helm values changes between 0.5.52 and 0.5.53.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="session-lifetime-behavior">Session lifetime behavior<a href="https://caipe.io/blog/releases/release-0.5.53#session-lifetime-behavior" class="hash-link" aria-label="Direct link to Session lifetime behavior" title="Direct link to Session lifetime behavior" translate="no">​</a></h3>
<p>The updated SSO defaults take effect the next time <code>keycloak-init</code> runs (on pod start for Helm deployments, or <code>docker compose run --rm keycloak-init</code> for Compose). Existing realms that were already initialized retain their previous values until init-idp is re-applied.</p>
<p>To customize the limits without changing the chart, set any of these in your <code>values.yaml</code> under the <code>keycloak</code> subchart env block, or in <code>.env</code> for Compose:</p>
<table><thead><tr><th>Variable</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>KEYCLOAK_SSO_SESSION_IDLE_TIMEOUT</code></td><td><code>604800</code> (7 d)</td><td>Idle timeout in seconds</td></tr><tr><td><code>KEYCLOAK_SSO_SESSION_MAX_LIFESPAN</code></td><td><code>1209600</code> (14 d)</td><td>Absolute max session length in seconds</td></tr><tr><td><code>KEYCLOAK_ACCESS_TOKEN_LIFESPAN</code></td><td><code>3600</code> (1 h)</td><td>Access-token TTL in seconds</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-runbook">Upgrade Runbook<a href="https://caipe.io/blog/releases/release-0.5.53#upgrade-runbook" class="hash-link" aria-label="Direct link to Upgrade Runbook" title="Direct link to Upgrade Runbook" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.53 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Shubham Bakshi</name>
            <uri>https://github.com/subbaksh</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.51 — Okta Baseline Bootstrap, Slack Routing Performance, IdP Sync Observability]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.51</id>
        <link href="https://caipe.io/blog/releases/release-0.5.51"/>
        <updated>2026-07-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-13]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-13
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.51</code>
Previous release: 0.5.50</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.51#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.51 fixes a critical gap where directory-synced users couldn't pass the AgentGateway ext_authz gate on their first login, hardens Slack event routing with per-stage timing logs and server-side OpenFGA filtering, and makes IdP sync progress observable through structured stage logs.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.51#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="directory-synced-users-bootstrapped-with-baseline-openfga-access">Directory-synced users bootstrapped with baseline OpenFGA access<a href="https://caipe.io/blog/releases/release-0.5.51#directory-synced-users-bootstrapped-with-baseline-openfga-access" class="hash-link" aria-label="Direct link to Directory-synced users bootstrapped with baseline OpenFGA access" title="Direct link to Directory-synced users bootstrapped with baseline OpenFGA access" translate="no">​</a></h3>
<p>The baseline OpenFGA grants required for a user to pass AgentGateway's coarse MCP <code>ext_authz</code> gate — specifically the <code>mcp-gateway-call</code> grant (<code>user:&lt;sub&gt; caller mcp_gateway:list</code>) — were only written by the interactive web-login path. Users provisioned by Okta directory sync (who may never have logged into the web UI) lacked these grants and were silently rejected at the gateway on their first API call. The sync now bootstraps baseline access before applying team-level grants, and member resolution is parallelized to keep the sync fast on large orgs.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2203" target="_blank" rel="noopener noreferrer" class="">#2203</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-routing-unfiltered-openfga-read-causing-slow-event-handling">Slack routing: unfiltered OpenFGA read causing slow event handling<a href="https://caipe.io/blog/releases/release-0.5.51#slack-routing-unfiltered-openfga-read-causing-slow-event-handling" class="hash-link" aria-label="Direct link to Slack routing: unfiltered OpenFGA read causing slow event handling" title="Direct link to Slack routing: unfiltered OpenFGA read causing slow event handling" translate="no">​</a></h3>
<p>The Slack event pipeline was reading all OpenFGA tuples for a subject without server-side filtering, then filtering client-side by channel. On deployments with many channels per user this produced large tuple reads that added visible latency to every Slack event. Tuple reads are now filtered server-side by channel subject.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2210" target="_blank" rel="noopener noreferrer" class="">#2210</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.51#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="idp-sync-per-stage-progress-logging">IdP sync: per-stage progress logging<a href="https://caipe.io/blog/releases/release-0.5.51#idp-sync-per-stage-progress-logging" class="hash-link" aria-label="Direct link to IdP sync: per-stage progress logging" title="Direct link to IdP sync: per-stage progress logging" translate="no">​</a></h3>
<p>The Okta/LDAP directory sync now emits structured log lines at each stage of a sync run — plan, reconcile, member resolution, and OpenFGA write — so operators can see where time is spent and diagnose stalls in large-org syncs without resorting to debug-level output.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2203" target="_blank" rel="noopener noreferrer" class="">#2203</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-routing-stage-timing-logs-at-debug-level">Slack routing: stage timing logs at DEBUG level<a href="https://caipe.io/blog/releases/release-0.5.51#slack-routing-stage-timing-logs-at-debug-level" class="hash-link" aria-label="Direct link to Slack routing: stage timing logs at DEBUG level" title="Direct link to Slack routing: stage timing logs at DEBUG level" translate="no">​</a></h3>
<p>Lightweight stage-timing logs are added across the Slack event pipeline (middleware entry, RBAC context enrichment, mention/message handler entry, <code>_route_to_agent</code> entry, channel-match duration) at <code>DEBUG</code> level, making it possible to profile where delays accumulate between Slack event receipt and agent response.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2210" target="_blank" rel="noopener noreferrer" class="">#2210</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.51#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.50.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0550--0551">Upgrade Guide: 0.5.50 → 0.5.51<a href="https://caipe.io/blog/releases/release-0.5.51#upgrade-guide-0550--0551" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.50 → 0.5.51" title="Direct link to Upgrade Guide: 0.5.50 → 0.5.51" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.51 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.48 — Okta Federated Identity, Slack Name Parsing, NoSQL Injection Fix]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.48</id>
        <link href="https://caipe.io/blog/releases/release-0.5.48"/>
        <updated>2026-07-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-10]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-10
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.48</code>
Previous release: 0.5.47</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.48#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.48 fixes a critical gap in Okta directory sync (synced users lacked a Keycloak federated identity and couldn't SSO login), stops Slack bot/user names with spaces from being parsed as multiple entries, and patches a NoSQL injection vulnerability in the GridFS store.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.48#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="okta-sync-users-now-get-a-real-keycloak-federated-identity">Okta-sync users now get a real Keycloak federated identity<a href="https://caipe.io/blog/releases/release-0.5.48#okta-sync-users-now-get-a-real-keycloak-federated-identity" class="hash-link" aria-label="Direct link to Okta-sync users now get a real Keycloak federated identity" title="Direct link to Okta-sync users now get a real Keycloak federated identity" translate="no">​</a></h3>
<p>Okta directory sync was provisioning shell users in Keycloak but never writing a <code>federatedIdentities</code> record for them. That record was previously only created by Keycloak's <code>idp-auto-link</code> authenticator during an actual interactive SSO login, leaving sync-provisioned users unable to complete SSO sign-in without first logging in manually. The sync now registers the federated identity directly during provisioning.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2181" target="_blank" rel="noopener noreferrer" class="">#2181</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-botuser-names-with-spaces-no-longer-split-into-multiple-entries">Slack bot/user names with spaces no longer split into multiple entries<a href="https://caipe.io/blog/releases/release-0.5.48#slack-botuser-names-with-spaces-no-longer-split-into-multiple-entries" class="hash-link" aria-label="Direct link to Slack bot/user names with spaces no longer split into multiple entries" title="Direct link to Slack bot/user names with spaces no longer split into multiple entries" translate="no">​</a></h3>
<p>Slack route allow-lists (bots, users) and escalation user lists (ping users, delete admins) are now stored and edited as arrays end-to-end instead of comma/space-joined strings. A multi-word name like "My Bot" can no longer be parsed into separate entries ("My", "Bot") when typed or re-read from the database.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2180" target="_blank" rel="noopener noreferrer" class="">#2180</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://caipe.io/blog/releases/release-0.5.48#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="nosql-injection-fix-in-gridfs-store">NoSQL injection fix in GridFS store<a href="https://caipe.io/blog/releases/release-0.5.48#nosql-injection-fix-in-gridfs-store" class="hash-link" aria-label="Direct link to NoSQL injection fix in GridFS store" title="Direct link to NoSQL injection fix in GridFS store" translate="no">​</a></h3>
<p><code>delete_by_key_prefix</code> in <code>gridfs_store.py</code> was interpolating a caller-supplied <code>prefix</code> directly into a MongoDB <code>$regex</code> pattern without escaping. Added <code>re.escape()</code> to sanitize the input before regex construction. Also upgrades Playwright Node CVEs and bumps APK packages in ingestor images.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2160" target="_blank" rel="noopener noreferrer" class="">#2160</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.48#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.47.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0547--0548">Upgrade Guide: 0.5.47 → 0.5.48<a href="https://caipe.io/blog/releases/release-0.5.48#upgrade-guide-0547--0548" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.47 → 0.5.48" title="Direct link to Upgrade Guide: 0.5.47 → 0.5.48" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.48 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.49 — Okta Sync Reliability, Tool Result Invariants, Mention-Only Onboarding Default]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.49</id>
        <link href="https://caipe.io/blog/releases/release-0.5.49"/>
        <updated>2026-07-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-10]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-10
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.49</code>
Previous release: 0.5.48</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.49#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.49 makes Okta IdP sync resilient to invalid display names, already-linked identities, and event-loop stalls in large orgs; restores correct tool result invariants for dynamic agents on Bedrock; and changes the default channel/space onboarding mode to mention-only to prevent bots from responding to every message in newly connected channels.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.49#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="animated-header-brand-and-navigation">Animated header brand and navigation<a href="https://caipe.io/blog/releases/release-0.5.49#animated-header-brand-and-navigation" class="hash-link" aria-label="Direct link to Animated header brand and navigation" title="Direct link to Animated header brand and navigation" translate="no">​</a></h3>
<p>The header brand now shows a one-shot active-gradient sweep and sparkle finish on hover or keyboard focus, with a refreshed navigation layout.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2187" target="_blank" rel="noopener noreferrer" class="">#2187</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.49#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="okta-idp-sync-resilient-to-invalid-names-and-already-linked-identities">Okta IdP sync resilient to invalid names and already-linked identities<a href="https://caipe.io/blog/releases/release-0.5.49#okta-idp-sync-resilient-to-invalid-names-and-already-linked-identities" class="hash-link" aria-label="Direct link to Okta IdP sync resilient to invalid names and already-linked identities" title="Direct link to Okta IdP sync resilient to invalid names and already-linked identities" translate="no">​</a></h3>
<p>Three reliability issues in the Okta IdP sync are fixed:</p>
<ul>
<li class=""><strong>Invalid character 400s</strong> — display names like <code>"Jane Doe (Contractor)"</code> were passed directly to Keycloak's admin API, triggering <code>error-person-name-invalid-character</code> responses. Names are now sanitized before provisioning.</li>
<li class=""><strong>Already-linked identity errors</strong> — if a user already had a federated identity from a previous sync or manual SSO, the sync was failing instead of treating it as success. <code>409</code> and already-linked responses are now handled gracefully.</li>
<li class=""><strong>Event-loop stalls</strong> — the sync was blocking the async event loop during synchronous member passes for large orgs, causing health probe timeouts and apparent hangs. The loop now yields periodically during member resolution.</li>
</ul>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2190" target="_blank" rel="noopener noreferrer" class="">#2190</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dynamic-agents-tool-result-invariants-restored">Dynamic agents tool result invariants restored<a href="https://caipe.io/blog/releases/release-0.5.49#dynamic-agents-tool-result-invariants-restored" class="hash-link" aria-label="Direct link to Dynamic agents tool result invariants restored" title="Direct link to Dynamic agents tool result invariants restored" translate="no">​</a></h3>
<p>A <code>ValidationException</code> was occurring on Bedrock Converse when an assistant <code>toolUse</code> reached the next model call without an adjacent <code>toolResult</code>. This was caused by the <code>PatchToolCallsMiddleware</code> not being applied to all code paths in the dynamic agents runtime. The invariant is now enforced consistently across all agent configurations.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2182" target="_blank" rel="noopener noreferrer" class="">#2182</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="channelspace-onboarding-defaults-to-mention-only-listen-mode">Channel/space onboarding defaults to mention-only listen mode<a href="https://caipe.io/blog/releases/release-0.5.49#channelspace-onboarding-defaults-to-mention-only-listen-mode" class="hash-link" aria-label="Direct link to Channel/space onboarding defaults to mention-only listen mode" title="Direct link to Channel/space onboarding defaults to mention-only listen mode" translate="no">​</a></h3>
<p>Slack channel and Webex space onboarding (bulk-apply defaults, single onboard endpoints, ghost-route materialization, and auto-assign of unmapped channels/spaces) now defaults new routes to <code>listen: "mention"</code> instead of <code>listen: "all"</code>. Previously, onboarding a channel caused the bot to respond to every message posted there, which was unexpected in active team channels.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2192" target="_blank" rel="noopener noreferrer" class="">#2192</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="keycloak-lookup-failures-no-longer-masked-as-not-found">Keycloak lookup failures no longer masked as not-found<a href="https://caipe.io/blog/releases/release-0.5.49#keycloak-lookup-failures-no-longer-masked-as-not-found" class="hash-link" aria-label="Direct link to Keycloak lookup failures no longer masked as not-found" title="Direct link to Keycloak lookup failures no longer masked as not-found" translate="no">​</a></h3>
<p>Real Keycloak API errors (network failures, 500s) were being swallowed and surfaced as user-not-found responses, making it impossible to distinguish a missing user from an API outage. Errors are now propagated correctly.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2192" target="_blank" rel="noopener noreferrer" class="">#2192</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.49#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.48.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavioral-note">Behavioral note<a href="https://caipe.io/blog/releases/release-0.5.49#behavioral-note" class="hash-link" aria-label="Direct link to Behavioral note" title="Direct link to Behavioral note" translate="no">​</a></h3>
<p>New Slack/Webex channel onboardings will default to mention-only mode. Existing configured channels are unaffected. To restore the previous all-messages behavior on new onboardings, set <code>listen: "all"</code> explicitly in the channel config.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0548--0549">Upgrade Guide: 0.5.48 → 0.5.49<a href="https://caipe.io/blog/releases/release-0.5.49#upgrade-guide-0548--0549" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.48 → 0.5.49" title="Direct link to Upgrade Guide: 0.5.48 → 0.5.49" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.49 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.50 — Slack Workflow Builder Mentions, General-Purpose Tool Results]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.50</id>
        <link href="https://caipe.io/blog/releases/release-0.5.50"/>
        <updated>2026-07-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-10]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-10
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.50</code>
Previous release: 0.5.49</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.50#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.50 fixes two agent reliability issues: Slack Workflow Builder @mentions now resolve the bot identity correctly instead of crashing on a missing user field, and the general-purpose deep-agent subagent correctly applies tool result invariants after the 0.5.49 fix.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.50#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-workflow-builder-mentions-resolve-bot-identity-correctly">Slack Workflow Builder @mentions resolve bot identity correctly<a href="https://caipe.io/blog/releases/release-0.5.50#slack-workflow-builder-mentions-resolve-bot-identity-correctly" class="hash-link" aria-label="Direct link to Slack Workflow Builder @mentions resolve bot identity correctly" title="Direct link to Slack Workflow Builder @mentions resolve bot identity correctly" translate="no">​</a></h3>
<p>When a Slack Workflow Builder step @mentions the bot, Slack delivers an <code>app_mention</code> event with <code>bot_id</code> set and no <code>user</code> field. The bot's <code>handle_mention</code> handler assumed every mention was human-authored (<code>user_id = event.get("user")</code>), so bot-authored workflow steps produced a missing <code>user_id</code> error. The handler now detects bot-authored mentions and resolves the bot's own identity as the sender, also minting an unlinked service account token for <code>bot_message</code>-subtype mentions.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2193" target="_blank" rel="noopener noreferrer" class="">#2193</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="general-purpose-deep-agent-tool-results-repaired">General-purpose deep-agent tool results repaired<a href="https://caipe.io/blog/releases/release-0.5.50#general-purpose-deep-agent-tool-results-repaired" class="hash-link" aria-label="Direct link to General-purpose deep-agent tool results repaired" title="Direct link to General-purpose deep-agent tool results repaired" translate="no">​</a></h3>
<p>Follow-up to #2182 (0.5.49). The <code>PatchToolCallsMiddleware</code> invariant fix was applied to the parent Dynamic Agent and configured subagents, but the <code>general-purpose</code> subagent in deep-agents mode is built independently and retained the narrower upstream middleware only. Tool result invariants are now applied to the general-purpose subagent as well.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2196" target="_blank" rel="noopener noreferrer" class="">#2196</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.50#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.49.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0549--0550">Upgrade Guide: 0.5.49 → 0.5.50<a href="https://caipe.io/blog/releases/release-0.5.50#upgrade-guide-0549--0550" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.49 → 0.5.50" title="Direct link to Upgrade Guide: 0.5.49 → 0.5.50" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.50 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.43 — Inline HITL Form in Chat, Slack Bot Fix]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.43</id>
        <link href="https://caipe.io/blog/releases/release-0.5.43"/>
        <updated>2026-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-09]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-09
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.43</code>
Previous release: 0.5.42</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.43#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.43 delivers the inline HITL (human-in-the-loop) input form directly in the chat timeline and fixes a Slack bot crash introduced by a stale keyword argument.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.43#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="inline-hitl-input-form-in-workflowruncard">Inline HITL input form in WorkflowRunCard<a href="https://caipe.io/blog/releases/release-0.5.43#inline-hitl-input-form-in-workflowruncard" class="hash-link" aria-label="Direct link to Inline HITL input form in WorkflowRunCard" title="Direct link to Inline HITL input form in WorkflowRunCard" translate="no">​</a></h3>
<p>Workflow runs that reach a <code>waiting_for_input</code> interrupt state now render the input form inline inside the chat message card — no page navigation required. The form matches the agent HITL panel style and submits via the existing interrupt resume API.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2148" target="_blank" rel="noopener noreferrer" class="">#2148</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.43#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="slack-bot-remove-stale-user_allowed-kwarg">Slack bot: remove stale user_allowed kwarg<a href="https://caipe.io/blog/releases/release-0.5.43#slack-bot-remove-stale-user_allowed-kwarg" class="hash-link" aria-label="Direct link to Slack bot: remove stale user_allowed kwarg" title="Direct link to Slack bot: remove stale user_allowed kwarg" translate="no">​</a></h3>
<p><code>SlackChannelRebacDecision</code> was being called with a <code>user_allowed</code> keyword argument that no longer exists in the updated signature, causing a <code>TypeError</code> crash on channel-authorization checks.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2152" target="_blank" rel="noopener noreferrer" class="">#2152</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.43#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.42.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0542--0543">Upgrade Guide: 0.5.42 → 0.5.43<a href="https://caipe.io/blog/releases/release-0.5.43#upgrade-guide-0542--0543" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.42 → 0.5.43" title="Direct link to Upgrade Guide: 0.5.42 → 0.5.43" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.43 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Erik Lutz</name>
            <uri>https://github.com/cisco-erilutz</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.44 — Resilient Docker Builds and Missing Workflows Doc]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.44</id>
        <link href="https://caipe.io/blog/releases/release-0.5.44"/>
        <updated>2026-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-09]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-09
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.44</code>
Previous release: 0.5.43</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.44#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.44 is a targeted CI/docs patch. All Wolfi-based Docker images now retry <code>apk add</code> with exponential backoff to survive transient APK mirror failures, and the missing <code>workflows.md</code> docs page that was breaking Docusaurus builds is added.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.44#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="resilient-apk-retries-in-all-wolfi-docker-images">Resilient APK retries in all Wolfi Docker images<a href="https://caipe.io/blog/releases/release-0.5.44#resilient-apk-retries-in-all-wolfi-docker-images" class="hash-link" aria-label="Direct link to Resilient APK retries in all Wolfi Docker images" title="Direct link to Resilient APK retries in all Wolfi Docker images" translate="no">​</a></h3>
<p>All Wolfi (Chainguard) based Dockerfiles — <code>keycloak-init</code>, <code>slack-bot</code>, <code>webex-bot</code>, <code>skill-scanner</code>, <code>Dockerfile.mcp</code>, <code>config-bridge</code>, <code>openfga-bridge</code> — now retry <code>apk add</code> with exponential backoff (5 s, 10 s, 20 s) when a transient mirror error causes the package manager to exit non-zero. <code>Dockerfile.keycloak-init</code> previously had no retry at all and was the source of intermittent CI failures.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2153" target="_blank" rel="noopener noreferrer" class="">#2153</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="missing-workflows-documentation-page">Missing workflows documentation page<a href="https://caipe.io/blog/releases/release-0.5.44#missing-workflows-documentation-page" class="hash-link" aria-label="Direct link to Missing workflows documentation page" title="Direct link to Missing workflows documentation page" translate="no">​</a></h3>
<p>Added <code>docs/docs/features/workflows.md</code> which was referenced by <code>features.tsx</code> but missing, causing Docusaurus to fail with a broken-link error on every docs build.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2153" target="_blank" rel="noopener noreferrer" class="">#2153</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.44#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.43.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0543--0544">Upgrade Guide: 0.5.43 → 0.5.44<a href="https://caipe.io/blog/releases/release-0.5.44#upgrade-guide-0543--0544" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.43 → 0.5.44" title="Direct link to Upgrade Guide: 0.5.43 → 0.5.44" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.44 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Release 0.5.45 — Inline HITL Form, Webex MCP Auth Fix, Resilient Docker Builds]]></title>
        <id>https://caipe.io/blog/releases/release-0.5.45</id>
        <link href="https://caipe.io/blog/releases/release-0.5.45"/>
        <updated>2026-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Released: 2026-07-09]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>Released: 2026-07-09
Chart: <code>oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.5.45</code>
Previous release: 0.5.43</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://caipe.io/blog/releases/release-0.5.45#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<p>0.5.45 brings the inline HITL (human-in-the-loop) input form directly into the chat timeline, fixes the Webex MCP 401 auth error, restores live workflow run status polling, and makes all Wolfi-based Docker builds resilient to transient APK mirror failures.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New Features<a href="https://caipe.io/blog/releases/release-0.5.45#new-features" class="hash-link" aria-label="Direct link to New Features" title="Direct link to New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="inline-hitl-input-form-in-chat-workflowruncard">Inline HITL input form in chat WorkflowRunCard<a href="https://caipe.io/blog/releases/release-0.5.45#inline-hitl-input-form-in-chat-workflowruncard" class="hash-link" aria-label="Direct link to Inline HITL input form in chat WorkflowRunCard" title="Direct link to Inline HITL input form in chat WorkflowRunCard" translate="no">​</a></h3>
<p>Workflow runs that reach a <code>waiting_for_input</code> interrupt state now render the input form inline inside the chat message card — no page navigation required. The form matches the agent HITL panel style and submits via the existing interrupt resume API. Each card also polls for live status updates until the run reaches a terminal state.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2142" target="_blank" rel="noopener noreferrer" class="">#2142</a>, <a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2143" target="_blank" rel="noopener noreferrer" class="">#2143</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://caipe.io/blog/releases/release-0.5.45#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="webex-mcp-credential-source--401-resolved">Webex MCP credential source — 401 resolved<a href="https://caipe.io/blog/releases/release-0.5.45#webex-mcp-credential-source--401-resolved" class="hash-link" aria-label="Direct link to Webex MCP credential source — 401 resolved" title="Direct link to Webex MCP credential source — 401 resolved" translate="no">​</a></h3>
<p>The Webex MCP server was not forwarding the provider token from the UI. Fixed by using <code>X-CAIPE-Provider-Token</code> as the credential source so the bot's Webex API token is correctly injected into MCP tool calls.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2150" target="_blank" rel="noopener noreferrer" class="">#2150</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="resilient-apk-retries-in-all-wolfi-docker-images">Resilient APK retries in all Wolfi Docker images<a href="https://caipe.io/blog/releases/release-0.5.45#resilient-apk-retries-in-all-wolfi-docker-images" class="hash-link" aria-label="Direct link to Resilient APK retries in all Wolfi Docker images" title="Direct link to Resilient APK retries in all Wolfi Docker images" translate="no">​</a></h3>
<p>All Wolfi (Chainguard) based Dockerfiles now retry <code>apk add</code> up to 3 times with a linear backoff (5 s, 10 s) when a transient mirror error causes the package manager to exit non-zero. <code>Dockerfile.keycloak-init</code> previously had no retry at all and was the source of intermittent <code>reconcile-test</code> CI failures. All images continue to pin <code>python-3.13</code> — the correct versioned Wolfi package name.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2153" target="_blank" rel="noopener noreferrer" class="">#2153</a>)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="missing-workflows-documentation-page">Missing workflows documentation page<a href="https://caipe.io/blog/releases/release-0.5.45#missing-workflows-documentation-page" class="hash-link" aria-label="Direct link to Missing workflows documentation page" title="Direct link to Missing workflows documentation page" translate="no">​</a></h3>
<p>Added <code>docs/docs/features/workflows.md</code> which was referenced by <code>features.tsx</code> but missing, causing Docusaurus to fail with a broken-link error on every docs build.</p>
<p>(<a href="https://github.com/cnoe-io/ai-platform-engineering/pull/2153" target="_blank" rel="noopener noreferrer" class="">#2153</a>)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://caipe.io/blog/releases/release-0.5.45#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes. Drop-in upgrade from 0.5.43.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upgrade-guide-0543--0545">Upgrade Guide: 0.5.43 → 0.5.45<a href="https://caipe.io/blog/releases/release-0.5.45#upgrade-guide-0543--0545" class="hash-link" aria-label="Direct link to Upgrade Guide: 0.5.43 → 0.5.45" title="Direct link to Upgrade Guide: 0.5.43 → 0.5.45" translate="no">​</a></h2>
<p>No values changes required.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">helm upgrade ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  oci://ghcr.io/cnoe-io/charts/ai-platform-engineering </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">--version</span><span class="token plain"> </span><span class="token number">0.5</span><span class="token plain">.45 </span><span class="token punctuation" style="color:rgb(248, 248, 242)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token parameter variable" style="color:rgb(189, 147, 249);font-style:italic">-f</span><span class="token plain"> your-values.yaml</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sri Aradhyula</name>
            <uri>https://linkedin.com/in/aradhyula</uri>
        </author>
        <author>
            <name>Shubham Bakshi</name>
            <uri>https://github.com/subbaksh</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
</feed>