<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://www.toriihq.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.toriihq.com/" rel="alternate" type="text/html" /><updated>2026-11-10T21:19:59+00:00</updated><id>https://www.toriihq.com/feed.xml</id><title type="html">Torii — SaaS Management Platform</title><subtitle>Find hidden apps, cut SaaS waste, and automate the rest</subtitle><entry><title type="html">Meet the new Eko: deeper context, sharper judgment, action on your approval</title><link href="https://www.toriihq.com/blog/meet-the-new-eko" rel="alternate" type="text/html" title="Meet the new Eko: deeper context, sharper judgment, action on your approval" /><published>2026-11-04T00:00:00+00:00</published><updated>2026-11-04T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/meet-the-new-eko</id><content type="html" xml:base="https://www.toriihq.com/blog/meet-the-new-eko"><![CDATA[<p>SaaS already changed faster than any team could track by hand. AI compounds it. The latest <a href="/solutions/eko-agentic-governance">Eko</a> update helps IT and Procurement understand what is happening across their stack, see what deserves attention, and turn what they find into governance that lasts.</p>

<style>
.eko-surfaces{display:grid;max-width:720px;margin:36px auto 0;font-family:'Eudoxus Sans','Plus Jakarta Sans',Arial,sans-serif;text-align:left}
.eko-surfaces .es-win{grid-area:1/1;align-self:start;width:52%;min-height:236px;background:#fff;border:1px solid #E5E7EB;border-radius:12px;overflow:hidden;box-shadow:0 14px 36px rgba(15,23,42,.16);box-sizing:border-box}
.eko-surfaces .es-app{z-index:1}
.eko-surfaces .es-slack{z-index:2;margin:24px 0 0 24%}
.eko-surfaces .es-term{z-index:3;margin:48px 0 0 48%;background:#0D1117;border-color:#30363D}
.eko-surfaces .es-bar{display:flex;align-items:center;gap:8px;height:42px;padding:0 12px;background:#fff;border-bottom:1px solid #E5E7EB;font-size:14px;line-height:1.2;color:#0A0A0A;white-space:nowrap}
.eko-surfaces .es-dots{display:flex;gap:5px;margin:0 6px 0 0}
.eko-surfaces .es-dots i{display:block;width:9px;height:9px;border-radius:50%;background:#D1D5DB}
.eko-surfaces .es-term .es-dots i:nth-child(1){background:#FF5F57}
.eko-surfaces .es-term .es-dots i:nth-child(2){background:#FEBC2E}
.eko-surfaces .es-term .es-dots i:nth-child(3){background:#28C840}
.eko-surfaces img{display:block;max-width:none;margin:0;border:0;box-shadow:none;border-radius:0}
.eko-surfaces .es-muted{color:#6B7280;font-size:12px}
.eko-surfaces .es-body{padding:14px 12px;font-size:13px;line-height:1.5;color:#0A0A0A}
.eko-surfaces .es-app .es-body{background:#F4F5F7;min-height:194px;box-sizing:border-box}
.eko-surfaces .es-q{margin:0 0 12px auto;max-width:80%;width:fit-content;background:#0054FF;color:#fff;padding:8px 11px;border-radius:14px 14px 4px 14px}
.eko-surfaces .es-row{display:flex;align-items:flex-start;gap:8px}
.eko-surfaces .es-a{background:#fff;border:1px solid #E5E7EB;padding:8px 11px;border-radius:4px 14px 14px 14px;max-width:80%}
.eko-surfaces .es-msg{display:flex;gap:9px;margin:0 0 14px}
.eko-surfaces .es-av{flex:0 0 30px;width:30px;height:30px;border-radius:6px;background:#E8912D;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.eko-surfaces .es-name{font-weight:700}
.eko-surfaces .es-tag{display:inline-block;font-size:10px;font-weight:700;color:#616061;background:#E8E8E8;border-radius:3px;padding:1px 4px;margin:0 2px;vertical-align:1px}
.eko-surfaces .es-mention{color:#1264A3;background:#E8F5FA;border-radius:3px;padding:0 2px}
.eko-surfaces .es-term .es-bar{background:#161B22;border-color:#30363D;color:#8B949E;justify-content:flex-start}
.eko-surfaces .es-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;color:#C9D1D9;padding:14px 14px 16px}
.eko-surfaces .es-mono > div{margin:0 0 2px}
.eko-surfaces .es-in{padding-left:2ch}
.eko-surfaces .es-p{color:#7EE787}
.eko-surfaces .es-t{color:#79C0FF}
.eko-surfaces .es-cur{display:inline-block;width:8px;height:15px;background:#C9D1D9;vertical-align:-3px}
.eko-surfaces-note{max-width:600px;margin:20px auto 0;text-align:center;font-size:16px;line-height:1.5}
.eko-surfaces-sample{max-width:600px;margin:4px auto 32px;text-align:center;font-size:12px;line-height:1.4;color:#6B7280}
@media (max-width:600px){
.eko-surfaces .es-win{width:82%;min-height:220px}
.eko-surfaces .es-slack{margin:58px 0 0 9%}
.eko-surfaces .es-term{margin:116px 0 0 18%}
}
</style>

<div class="eko-surfaces" role="figure" aria-label="Eko in three places: the Torii app, Slack, and a terminal through MCP">
<div class="es-win es-app">
<div class="es-bar"><span class="es-dots"><i></i><i></i><i></i></span><img src="/assets/images/blog/eko-avatar.webp" alt="" width="22" height="22" loading="lazy" style="width:22px;height:22px" /><span class="es-name">Eko</span><span class="es-muted">in Torii</span></div>
<div class="es-body">
<div class="es-q">What renews next?</div>
<div class="es-row"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="26" height="26" loading="lazy" style="width:26px;height:26px;flex:0 0 26px" /><div class="es-a">Zoom renews first, on <strong style="font-weight:700">Dec 15</strong>, at $38,400 a year.</div></div>
</div>
</div>
<div class="es-win es-slack">
<div class="es-bar"><span class="es-dots"><i></i><i></i><i></i></span><img src="/assets/images/service-icons/Slack.webp" alt="Slack" width="20" height="20" loading="lazy" style="width:20px;height:20px" /><span class="es-name"><span style="color:#6B7280;font-weight:400;margin-right:3px">#</span>it-ops</span></div>
<div class="es-body">
<div class="es-msg"><img src="/assets/images/headshots/sm/mara-ellison-96.webp" alt="" width="30" height="30" loading="lazy" style="width:30px;height:30px;flex:0 0 30px;border-radius:6px;object-fit:cover" /><div><div><span class="es-name">Mara Ellison</span> <span class="es-muted">9:41 AM</span></div><div><span class="es-mention">@Eko</span> how many Figma seats are unused?</div></div></div>
<div class="es-msg"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="30" height="30" loading="lazy" style="width:30px;height:30px;flex:0 0 30px;border-radius:6px" /><div><div><span class="es-name">Eko</span> <span class="es-tag">APP</span> <span class="es-muted">9:41 AM</span></div><div>18 of 120 Figma seats haven&#39;t been used in the last 30 days.</div></div></div>
</div>
</div>
<div class="es-win es-term">
<div class="es-bar"><span class="es-dots"><i></i><i></i><i></i></span><span>Claude Code</span></div>
<div class="es-mono">
<div><span class="es-p">&gt;</span> What did we spend on AI tools last quarter?</div>
<div class="es-t">&#9210; eko - ask (MCP)</div>
<div class="es-in">$184,200 across 11 AI tools.</div>
<div class="es-in">Largest: OpenAI at $71,400.</div>
<div><span class="es-p">&gt;</span> <span class="es-cur"></span></div>
</div>
</div>
</div>
<div class="eko-surfaces-note">Eko is available in the Torii app, in Slack, and via MCP.</div>
<div class="eko-surfaces-sample">Illustrative examples with sample data.</div>

<h2 id="saas-moved-fast-ai-accelerates-it">SaaS moved fast, AI accelerates it</h2>

<p>For most IT and Procurement teams, SaaS was never a static inventory. New apps arrive through expense reports and free trials. Licenses drift away from what people actually use. Renewals come due on their own schedule, ready or not.</p>

<p>AI adds new layers on top of that. Teams build their own internal apps. Usage is billed in tokens instead of seats. API keys and secrets spread across tools. Integrations link systems that used to stand alone. And AI features now ship inside software you already approved, quietly changing what that software can reach.</p>

<p>None of these is a separate problem. A single new AI tool touches spend, access, security, and vendor risk at once. The work is not only bigger. The decisions are more connected, and each one depends on context from the others.</p>

<h2 id="management-is-more-than-visibility">Management is more than visibility</h2>

<p>Torii helps IT and Procurement manage SaaS and AI together, so spend stays optimized and governance stays strong as the stack evolves. Seeing everything in one place is the foundation. As environments get more complex, we believe a management platform should carry more of the load on top of it.</p>

<p>That means interpreting what is happening, pointing out what deserves attention, and helping your team respond. It is the standard behind this update to Eko.</p>

<h2 id="whats-new-in-eko">What’s new in Eko</h2>

<p>Eko now brings three things together: trusted answers from your own data, the ability to recognize patterns across your environment, and the means to act on what it finds once you approve. Here is what that looks like in practice.</p>

<h3 id="answers-from-your-own-contracts-not-general-knowledge">Answers from your own contracts, not general knowledge</h3>

<style>
.ekc{max-width:600px;margin:32px auto 0;font-family:'Eudoxus Sans','Plus Jakarta Sans',Arial,sans-serif;font-size:15px;line-height:1.55;font-weight:400;color:#0A0A0A;text-align:left;background:#F4F5F7;border:1px solid #E5E7EB;border-radius:16px;overflow:hidden;box-sizing:border-box}
.ekc *{box-sizing:border-box}
.ekc img{display:block;max-width:none;margin:0;border:0;border-radius:0;box-shadow:none}
.ekc strong{font-weight:700;color:inherit}
.ekc ol{margin:0 0 10px;padding:0 0 0 20px;list-style:decimal}
.ekc li{margin:0 0 4px;padding:0;font-size:inherit;line-height:inherit;color:inherit;font-weight:inherit}
.ekc .ekc-body table{width:100%;border-collapse:collapse;border:0;margin:0 0 10px;background:none;font-family:inherit;table-layout:auto}
.ekc .ekc-body table th,.ekc .ekc-body table td{text-align:left;vertical-align:top;font-family:inherit;font-size:13px;line-height:1.4;color:inherit;padding:7px 8px 7px 0;border:0;border-bottom:1px solid #E5E7EB;background:none}
.ekc .ekc-body table th{font-size:12px;font-weight:600;color:#6B7280}
.ekc .ekc-body table td:first-child{font-weight:600}
.ekc .ekc-body table .ekc-r{text-align:right;padding-right:0}
.ekc-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fff;border-bottom:1px solid #E5E7EB;line-height:1.2;white-space:nowrap}
.ekc-title{font-size:15px;font-weight:700}
.ekc-sub{font-size:13px;color:#6B7280}
.ekc-corner{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:12px;color:#6B7280}
.ekc-body{padding:20px 16px 22px}
.ekc-p{margin:0 0 10px}
.ekc-p:last-child,.ekc-body>:last-child{margin-bottom:0}
.ekc-hl{color:#0054FF}
.ekc-muted{color:#6B7280}
.ekc-src{display:inline-block;max-width:100%;margin:2px 0 0;font-size:12px;line-height:1.4;color:#1A41A5;background:#F4F5F7;border:1px solid #E5E7EB;border-radius:10px;padding:4px 10px}
.ekc-src span{color:#6B7280}
.ekc-card{background:#F4F5F7;border:1px solid #E5E7EB;border-radius:12px;padding:12px 14px;margin:0 0 10px}
.ekc-card-title{font-size:14px;font-weight:700}
.ekc-card-sub{font-size:12px;color:#1A41A5;margin:2px 0 8px}
.ekc-card ol{font-size:14px;line-height:1.5;margin:0}
.ekc-card-foot{font-size:13px;color:#6B7280;margin:8px 0 0}
.ekc-stat{display:flex;align-items:baseline;gap:8px;margin:0 0 4px;font-size:14px}
.ekc-stat:last-child{margin:0}
.ekc-stat strong{font-size:20px;color:#0054FF;min-width:64px;text-align:right}
.ekc-btns{margin:12px 0 0;display:flex;flex-wrap:wrap;gap:6px}
.ekc-btn{display:inline-block;font-size:13px;font-weight:600;line-height:1;padding:9px 14px;border-radius:8px;background:#fff;color:#0054FF;border:1px solid #C7D2FE}
.ekc-btn--primary{background:#0054FF;color:#fff;border-color:#0054FF}
.ekc-ctx{font-size:12px;line-height:1.4;color:#6B7280;margin:0 0 6px;text-align:right}
.ekc-ctx strong{color:#1A41A5}
.ekc-qwrap{display:flex;flex-direction:column;align-items:flex-end;margin:0 0 16px}
.ekc-q{max-width:85%;background:#0054FF;color:#fff;line-height:1.5;padding:10px 14px;border-radius:18px 18px 4px 18px}
.ekc-row{display:flex;align-items:flex-start;gap:10px}
.ekc-a{max-width:85%;min-width:0;background:#fff;border:1px solid #E5E7EB;padding:12px 14px;border-radius:4px 18px 18px 18px}
.ekc--wide .ekc-a{flex:1 1 auto;max-width:calc(100% - 42px)}
.ekc--slack{background:#fff;font-size:15px}
.ekc--slack .ekc-bar{border-bottom-color:#E8E8E8}
.ekc-hash{color:#6B7280;font-weight:400;margin-right:2px}
.ekc-msg{display:flex;align-items:flex-start;gap:10px;margin:0 0 18px}
.ekc-msg:last-child{margin:0}
.ekc-sav{flex:0 0 36px;width:36px;height:36px;border-radius:8px;background:#E8912D;color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ekc-mbody{min-width:0;flex:1 1 auto}
.ekc-meta{margin:0 0 2px;line-height:1.3}
.ekc-name{font-weight:700}
.ekc-time{font-size:12px;color:#616061;margin-left:4px}
.ekc-app{display:inline-block;font-size:10px;font-weight:700;color:#616061;background:#E8E8E8;border-radius:3px;padding:1px 4px;margin-left:4px;vertical-align:1px}
.ekc--slack .ekc-card{background:#fff;border:1px solid #E8E8E8;border-left:4px solid #DDDDDD;border-radius:4px}
.ekc--slack .ekc-card-sub{color:#616061}
.ekc--slack .ekc-btn{border-radius:4px;color:#1D1C1D;border-color:#BBBABB;background:#fff}
.ekc--slack .ekc-btn--primary{background:#007A5A;border-color:#007A5A;color:#fff}
.ekc--slack .ekc-src{background:none;border:0;padding:0;color:#616061;border-radius:0}
.ekc--terminal{background:#0D1117;border-color:#30363D;color:#C9D1D9}
.ekc--terminal .ekc-bar{background:#161B22;border-bottom-color:#30363D;color:#8B949E;font-size:13px}
.ekc-dots{display:flex;gap:6px;margin-right:4px}
.ekc-dots i{display:block;width:11px;height:11px;border-radius:50%;background:#FF5F57}
.ekc-dots i+i{background:#FEBC2E}
.ekc-dots i+i+i{background:#28C840}
.ekc-chip{font-size:11px;font-weight:600;color:#C9D1D9;border:1px solid #30363D;border-radius:999px;padding:3px 8px}
.ekc--terminal .ekc-body{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.6}
.ekc-prompt{background:#161B22;border-left:2px solid #484F58;padding:8px 12px;margin:0 0 14px;color:#E6EDF3}
.ekc-prompt b{color:#8B949E;font-weight:400}
.ekc-step{display:flex;gap:8px;margin:0 0 4px}
.ekc-dot{flex:0 0 auto;color:#3FB950}
.ekc-dot--say{color:#E6EDF3}
.ekc-tool{color:#E6EDF3;font-weight:700}
.ekc-res{padding-left:18px;margin:0 0 14px;color:#8B949E}
.ekc--terminal strong{color:#fff}
.ekc--terminal .ekc-hl{color:#79C0FF}
.ekc--terminal .ekc-muted,.ekc--terminal .ekc-body table th{color:#8B949E}
.ekc--terminal .ekc-body table th,.ekc--terminal .ekc-body table td{border-bottom-color:#30363D;font-size:12.5px}
.ekc--terminal .ekc-src{background:none;border:0;padding:0;border-radius:0;color:#8B949E}
.ekc--terminal .ekc-src span{color:#8B949E}
.ekc--bare{margin:0;max-width:none}
.ekc-cap{max-width:600px;margin:8px auto 32px;font-family:'Eudoxus Sans','Plus Jakarta Sans',Arial,sans-serif;font-size:12px;line-height:1.4;color:#6B7280;text-align:center}
@media (max-width:480px){.ekc-body{padding:16px 12px 18px}.ekc-bar{padding:12px}.ekc-time{display:none}.ekc--terminal .ekc-body{font-size:12.5px}.ekc--terminal .ekc-body table th,.ekc--terminal .ekc-body table td{font-size:12px;padding-right:6px;overflow-wrap:anywhere}.ekc--terminal .ekc-body table td:first-child{overflow-wrap:normal}}
</style>

<div class="ekc ekc--terminal" role="figure" aria-label="Example conversation in Claude Code: asking Eko over MCP about a Salesforce contract">
<div class="ekc-bar"><span class="ekc-dots"><i></i><i></i><i></i></span><span>Claude Code</span><span class="ekc-corner"><span class="ekc-chip">MCP &middot; Eko</span></span></div>
<div class="ekc-body">
<div class="ekc-prompt"><b>&gt;</b> What's the notice period in our Salesforce contract?</div>
<div class="ekc-step"><span class="ekc-dot">&#9210;</span><span><span class="ekc-tool">eko - ask (MCP)</span><span class="ekc-muted">(question: "Salesforce contract notice period")</span></span></div>
<div class="ekc-res">&#9151;&nbsp; Found Salesforce Order Form, Section 9.2</div>
<div class="ekc-step"><span class="ekc-dot ekc-dot--say">&#9210;</span><div style="min-width:0;flex:1 1 auto">
<div class="ekc-p">Your Salesforce agreement requires <strong>60 days&#39; written notice</strong> to cancel before it auto-renews.</div>
<div class="ekc-p">Your current term ends <strong>March 31, 2027</strong>, so the last day to give notice is <strong class="ekc-hl">January 30, 2027</strong>.</div>
<div class="ekc-src"><span>Source:</span> Salesforce Order Form, Section 9.2 (Term and Renewal)</div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Eko reads your contract and gives you the answer. A missed notice window can lock you into another term at the old price, so a fast, accurate answer here translates directly into money.</p>

<h3 id="it-reads-how-your-environment-actually-works">It reads how your environment actually works</h3>

<div class="ekc ekc--slack" role="figure" aria-label="Example Slack conversation: asking Eko to explain an offboarding workflow">
<div class="ekc-bar"><span class="ekc-title"><span class="ekc-hash">#</span>it-ops</span><span class="ekc-corner"><img src="/assets/images/service-icons/Slack.webp" alt="Slack" width="22" height="22" loading="lazy" style="width:22px;height:22px" /></span></div>
<div class="ekc-body">
<div class="ekc-msg"><img class="ekc-sav" src="/assets/images/headshots/sm/desmond-vale-96.webp" alt="" width="36" height="36" loading="lazy" style="object-fit:cover" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Desmond Vale</span><span class="ekc-time">9:41 AM</span></div><div><span style="color:#1264A3;background:#E8F5FA;border-radius:3px;padding:0 2px">@Eko</span> explain what our offboarding workflow does.</div></div></div>
<div class="ekc-msg"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="36" height="36" loading="lazy" style="width:36px;height:36px;flex:0 0 36px;border-radius:8px" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Eko</span><span class="ekc-app">APP</span><span class="ekc-time">9:41 AM</span></div>
<div class="ekc-p">Your <strong>Employee offboarding</strong> workflow starts when someone&#39;s status changes to <strong>Terminated</strong> in BambooHR. Then it:</div>
<ol>
<li>Waits until their last day of work</li>
<li>Removes their access to every app connected through Okta</li>
<li>Opens a ticket for each app owner where access has to be removed by hand</li>
<li>Transfers their Google Drive files to their manager</li>
<li>Posts a summary in #it-ops on Slack</li>
</ol>
<div class="ekc-p"><strong>One condition:</strong> if the person is a contractor, it skips the file transfer.</div>
<div class="ekc-src"><span>Source:</span> Workflows &rsaquo; Employee offboarding (5 actions, 1 condition)</div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Eko explains the workflow you built, with its real triggers, conditions, and steps, rather than a generic description from the help center. That helps when you inherit a workflow, review one, or need to walk an auditor through it.</p>

<h3 id="it-knows-where-you-are">It knows where you are</h3>

<div class="ekc ekc--torii" role="figure" aria-label="Example conversation in Torii: asking Eko what the Remove users button will do">
<div class="ekc-bar"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="28" height="28" loading="lazy" style="width:28px;height:28px" /><span class="ekc-title">Eko</span><span class="ekc-sub">in Torii</span><span class="ekc-corner"><img src="/assets/images/service-icons/Torii_logomark_white.svg" alt="Torii" width="22" height="22" loading="lazy" style="width:24px;height:24px;border-radius:6px" /></span></div>
<div class="ekc-body">
<div class="ekc-qwrap"><div class="ekc-ctx">On page: <strong style="font-weight:700;color:#1A41A5;">Zoom &rsaquo; Users</strong> &middot; 14 selected</div><div class="ekc-q">What happens if I click Remove users on this page?</div></div>
<div class="ekc-row"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="32" height="32" loading="lazy" style="width:32px;height:32px;flex:0 0 32px;margin-top:2px" /><div class="ekc-a">
<div class="ekc-p"><strong>Remove users</strong> takes the 14 people you selected out of Zoom.</div>
<div class="ekc-p">They lose access right away, their licenses go back into your available pool, and each person&#39;s manager gets an email from Torii.</div>
<div class="ekc-p"><strong class="ekc-hl">Heads up:</strong> 3 of the 14 used Zoom this week. You may want to filter by <strong>Last used</strong> first.</div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Eko sees the page you are on, so it can tell you what an action will do before you take it. You act with confidence instead of testing in production.</p>

<h3 id="it-builds-things-worth-sharing">It builds things worth sharing</h3>

<div class="ekc ekc--torii ekc--wide" role="figure" aria-label="Example conversation in Torii: asking Eko to build a renewal tracker">
<div class="ekc-bar"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="28" height="28" loading="lazy" style="width:28px;height:28px" /><span class="ekc-title">Eko</span><span class="ekc-sub">in Torii</span><span class="ekc-corner"><img src="/assets/images/service-icons/Torii_logomark_white.svg" alt="Torii" width="22" height="22" loading="lazy" style="width:24px;height:24px;border-radius:6px" /></span></div>
<div class="ekc-body">
<div class="ekc-qwrap"><div class="ekc-q">Build a renewal tracker.</div></div>
<div class="ekc-row"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="32" height="32" loading="lazy" style="width:32px;height:32px;flex:0 0 32px;margin-top:2px" /><div class="ekc-a">
<div class="ekc-p">Here are your renewals through March 2027: <strong>6 contracts</strong> worth <strong>$412,000</strong> a year.</div>
<table role="table">
<thead><tr><th>App</th><th>Renews</th><th class="ekc-r">Annual cost</th></tr></thead>
<tbody>
<tr><td>Zoom</td><td>Dec 15, 2026</td><td class="ekc-r">$38,400</td></tr>
<tr><td>Atlassian</td><td>Jan 8, 2027</td><td class="ekc-r">$96,000</td></tr>
<tr><td>Slack</td><td>Feb 1, 2027</td><td class="ekc-r">$74,500</td></tr>
<tr><td>Salesforce</td><td>Mar 31, 2027<div class="ekc-hl" style="font-size:11px;font-weight:600;margin:2px 0 0">Notice by Jan 30</div></td><td class="ekc-r">$186,000</td></tr>
</tbody>
</table>
<div class="ekc-muted" style="font-size:12px">+ 2 more renewals</div>
<div class="ekc-btns"><span class="ekc-btn ekc-btn--primary">Open tracker</span><span class="ekc-btn">Share</span></div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Eko pulls your upcoming renewals into a tracker you can review, refine, and send to finance or leadership.</p>

<h3 id="it-compares-the-apps-you-already-pay-for">It compares the apps you already pay for</h3>

<div class="ekc ekc--slack" role="figure" aria-label="Example Slack conversation: asking Eko whether to renew ChatGPT or Claude">
<div class="ekc-bar"><span class="ekc-title"><span class="ekc-hash">#</span>procurement</span><span class="ekc-corner"><img src="/assets/images/service-icons/Slack.webp" alt="Slack" width="22" height="22" loading="lazy" style="width:22px;height:22px" /></span></div>
<div class="ekc-body">
<div class="ekc-msg"><img class="ekc-sav" src="/assets/images/headshots/sm/peter-96.webp" alt="" width="36" height="36" loading="lazy" style="object-fit:cover" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Peter Kilian</span><span class="ekc-time">9:41 AM</span></div><div><span style="color:#1264A3;background:#E8F5FA;border-radius:3px;padding:0 2px">@Eko</span> we pay for ChatGPT and Claude. Which one should we renew?</div></div></div>
<div class="ekc-msg"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="36" height="36" loading="lazy" style="width:36px;height:36px;flex:0 0 36px;border-radius:8px" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Eko</span><span class="ekc-app">APP</span><span class="ekc-time">9:41 AM</span></div>
<div class="ekc-p"><strong>Recommendation: renew Claude</strong> (high confidence).</div>
<div class="ekc-p">Claude has more active users, more assigned licenses, and higher tracked spend, so it&#39;s the cleaner renewal case. ChatGPT has fewer active users and messages, and its billing data doesn&#39;t line up. If you can keep only one, Claude is the easier renewal to defend.</div>
<table role="table">
<thead><tr><th></th><th>Claude</th><th>ChatGPT</th></tr></thead>
<tbody>
<tr><td>Active users (30 days)</td><td>412</td><td>268</td></tr>
<tr><td>Paid seats</td><td>450</td><td>400</td></tr>
<tr><td>Licenses assigned</td><td>438</td><td>391</td></tr>
<tr><td>Usage (30 days)</td><td>48,900 messages</td><td>17,300 messages</td></tr>
<tr><td>Active contract</td><td>Yes, renews Jun 2027</td><td>Yes, renews May 2027</td></tr>
<tr><td>Tracked spend (12 months)</td><td>$198,000</td><td>$156,000</td></tr>
<tr><td>New charges</td><td>None</td><td><span class="ekc-hl" style="font-weight:600">$4,800 not on the contract</span></td></tr>
</tbody>
</table>
<div class="ekc-p">I wouldn&#39;t cancel ChatGPT until its seats and billing are reconciled.</div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Ask which of two overlapping tools to keep, and Eko weighs them on your own data: active users, paid seats, usage, contracts, and spend. It also tells you when that data doesn’t add up.</p>

<h3 id="it-supports-decisions-before-you-buy">It supports decisions before you buy</h3>

<div class="ekc ekc--terminal" role="figure" aria-label="Example conversation in Claude Code: asking Eko over MCP to compare Dashlane and NordPass">
<div class="ekc-bar"><span class="ekc-dots"><i></i><i></i><i></i></span><span>Claude Code</span><span class="ekc-corner"><span class="ekc-chip">MCP &middot; Eko</span></span></div>
<div class="ekc-body">
<div class="ekc-prompt"><b>&gt;</b> Compare Dashlane and NordPass. Which should we buy?</div>
<div class="ekc-step"><span class="ekc-dot">&#9210;</span><span><span class="ekc-tool">eko - ask (MCP)</span><span class="ekc-muted">(question: "Dashlane vs NordPass")</span></span></div>
<div class="ekc-res">&#9151;&nbsp; Compared pricing, certifications, and identity features</div>
<div class="ekc-step"><span class="ekc-dot ekc-dot--say">&#9210;</span><div style="min-width:0;flex:1 1 auto">
<div class="ekc-p"><strong>Recommendation: Dashlane</strong> (medium confidence).</div>
<div class="ekc-p">Dashlane has the stronger enterprise controls. NordPass costs much less, but Entra ID and Okta SSO and automated provisioning are Enterprise-tier features there, which narrows the gap.</div>
<table role="table">
<thead><tr><th></th><th>Dashlane</th><th>NordPass</th></tr></thead>
<tbody>
<tr><td>Price</td><td>$8/user/mo</td><td>From $3.59/user/mo (2-year term, 5 seats min.)</td></tr>
<tr><td>Certs</td><td>SOC 2 Type II, ISO 27001</td><td>SOC 2 Type 2, ISO 27001</td></tr>
<tr><td>SSO, SCIM</td><td>On business plans</td><td>Enterprise tier only</td></tr>
<tr><td>Trade-off</td><td>Stronger controls, higher price</td><td>Cheaper, key controls cost extra</td></tr>
</tbody>
</table>
<div class="ekc-p">Before you buy, run a short proof of concept on SCIM offboarding and audit-log export.</div>
<div class="ekc-src"><span>Sources:</span> support.dashlane.com, nordpass.com (public list prices, not quotes)</div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>Ask Eko to compare vendors on pricing and security certifications, and it returns a side-by-side view with sources you can check yourself.</p>

<h3 id="it-turns-a-request-into-a-recurring-job">It turns a request into a recurring job</h3>

<div class="ekc ekc--slack" role="figure" aria-label="Example Slack conversation: asking Eko to set up a weekly license check">
<div class="ekc-bar"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="22" height="22" loading="lazy" style="width:22px;height:22px;border-radius:5px" /><span class="ekc-title">Eko</span><span class="ekc-corner"><img src="/assets/images/service-icons/Slack.webp" alt="Slack" width="22" height="22" loading="lazy" style="width:22px;height:22px" /></span></div>
<div class="ekc-body">
<div class="ekc-msg"><img class="ekc-sav" src="/assets/images/headshots/sm/elliot-96.webp" alt="" width="36" height="36" loading="lazy" style="object-fit:cover" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Elliot Jenson</span><span class="ekc-time">9:41 AM</span></div><div>Check every license has a cost each week, ping the app owners, and send me a report.</div></div></div>
<div class="ekc-msg"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="36" height="36" loading="lazy" style="width:36px;height:36px;flex:0 0 36px;border-radius:8px" /><div class="ekc-mbody"><div class="ekc-meta"><span class="ekc-name">Eko</span><span class="ekc-app">APP</span><span class="ekc-time">9:41 AM</span></div>
<div class="ekc-p">Here&#39;s the weekly job I&#39;ll set up. It won&#39;t run until you approve it.</div>
<div class="ekc-card">
<div class="ekc-card-title">Weekly license cost check</div>
<div class="ekc-card-sub">Every Monday at 9:00 AM</div>
<ol><li>Find licenses with no cost attached</li><li>Message each app owner on Slack to add the cost</li><li>Email you a report of what got fixed and what&#39;s still missing</li></ol>
<div class="ekc-card-foot">This week it would flag <strong style="color:#0A0A0A">23 licenses</strong> across <strong style="color:#0A0A0A">7 apps</strong>.</div>
</div>
<div class="ekc-btns"><span class="ekc-btn ekc-btn--primary">Approve</span><span class="ekc-btn">Edit</span></div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>One request covers all three parts: Eko finds the pattern (licenses with no cost attached), takes the action (notifying the owners), and reports back, every week, with your sign-off on what it does.</p>

<h2 id="from-a-single-answer-to-a-standing-process">From a single answer to a standing process</h2>

<p>A fast answer helps today. The larger payoff comes when a finding becomes something that keeps working after the conversation ends.</p>

<p>When Eko sees the same issue more than once, such as licenses with no cost, apps nobody opens, or renewals that keep arriving late, it points out the policy to tighten or the task worth automating. You review the suggestion and approve it. From then on, it runs as the stack grows, without anyone scheduling an audit.</p>

<div class="ekc ekc--torii ekc--wide" role="figure" aria-label="Example message in Torii: Eko flags a policy gap in app and contract ownership">
<div class="ekc-bar"><img src="/assets/images/blog/eko-avatar.webp" alt="" width="28" height="28" loading="lazy" style="width:28px;height:28px" /><span class="ekc-title">Eko</span><span class="ekc-sub">in Torii</span><span class="ekc-corner"><img src="/assets/images/service-icons/Torii_logomark_white.svg" alt="Torii" width="22" height="22" loading="lazy" style="width:24px;height:24px;border-radius:6px" /></span></div>
<div class="ekc-body">
<div class="ekc-row"><img class="ekc-mood" src="/assets/images/blog/eko-avatar.webp" alt="" width="32" height="32" loading="lazy" style="width:32px;height:32px;flex:0 0 32px;margin-top:2px" /><div class="ekc-a">
<div class="ekc-p"><strong>Policy gap: ownership is inconsistent.</strong></div>
<div class="ekc-card">
<div class="ekc-stat"><strong>1,240</strong><span>active apps have no owner</span></div>
<div class="ekc-stat"><strong>185</strong><span>active contracts have no owner</span></div>
</div>
<div class="ekc-p"><strong>Recommendation:</strong> Run a weekly policy that flags missing owners, asks the likely owner to confirm, and prepares updates for approval.</div>
<div class="ekc-btns"><span class="ekc-btn ekc-btn--primary">Set up weekly policy</span></div>

</div></div>
</div>
</div>
<div class="ekc-cap">Illustrative example with sample data.</div>

<p>This is the link between everyday assistance and governance at scale. Each question your team asks can leave the environment in better shape than it was before.</p>

<h2 id="what-it-means-for-each-team">What it means for each team</h2>

<h3 id="it">IT</h3>

<p>The work you already do goes faster. Eko also points out policies worth tightening and tasks worth automating, then carries them out when you approve. Governance keeps improving between audits, and your team gets time back for the projects that need people.</p>

<h3 id="procurement">Procurement</h3>

<p>Answers about contracts and renewals arrive in seconds instead of after a search through folders. Patterns like underused apps or renewals that keep landing late surface early. That means better timing on every renewal and a stronger position at the negotiating table.</p>

<h3 id="leadership">Leadership</h3>

<p>Governance improves continuously, and a person approves every action. The stack stays optimized and within budget as AI adoption grows, without adding risk.</p>

<p>All three teams meet at the same point: governance that keeps up with how fast the stack changes, with people in control.</p>

<h2 id="your-team-stays-in-control">Your team stays in control</h2>

<p>Eko proposes and people decide. Whenever Eko would change something, whether that’s a policy, an automation, or a message to app owners, it waits for your approval first.</p>

<p>That is what lets Eko take on more of the work without asking you to give up oversight. Your team sets the direction, and Eko helps carry it out across a stack that keeps growing.</p>

<p>SaaS and AI will keep compounding. With Eko, your governance can compound too.</p>

<p><strong>Try it today:</strong> open Eko on any page in Torii and ask it something about your own stack.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><summary type="html"><![CDATA[The new Eko helps IT and Procurement understand their SaaS and AI stack, spot what needs attention, and turn findings into governance that lasts.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/blog/meet-the-new-eko-cover.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/blog/meet-the-new-eko-cover.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Torii Signs Agreement to Join Freshworks</title><link href="https://www.toriihq.com/blog/torii-freshworks-acquisition" rel="alternate" type="text/html" title="Torii Signs Agreement to Join Freshworks" /><published>2026-10-12T00:00:00+00:00</published><updated>2026-10-12T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/torii-freshworks-acquisition</id><content type="html" xml:base="https://www.toriihq.com/blog/torii-freshworks-acquisition"><![CDATA[<p>Torii has entered into a definitive agreement to be acquired by Freshworks (NASDAQ: FRSH). We expect to close in Freshworks’ fourth fiscal quarter of 2026, subject to customary closing conditions. Until then, we continue to operate as two separate, independent companies, and nothing changes for our customers today.</p>

<h2 id="why-this-is-the-right-next-step">Why this is the right next step</h2>

<p>Tal, Uri Nativ, and I started Torii in 2017 with a problem we could not get anyone to care about. Software was piling up inside companies faster than any team could keep track of it, and every tool we looked at covered one slice of the picture. Nobody could answer the basic questions. What do we have? Who uses it? What does it cost? We wanted one piece of software to manage all software. Most of the people we pitched told us that was not a real category, so we built it ourselves.</p>

<p>Others followed, and SaaS management became a category. This year, Torii was named a Leader in the 2026 Gartner® Magic Quadrant™ for SaaS Management Platforms, for the third consecutive year.</p>

<p>Nearly a decade later the problem is bigger, and AI has made it harder. Consumption pricing does not fit the way anyone budgets for software, and most of these tools arrive without IT hearing about them. Fixing that at scale means software management cannot sit in a tool of its own. It has to run inside the systems IT already uses: the service desk where access gets granted and offboarding happens, the CMDB where the rest of the estate is tracked, and the ITAM and ITSM workflows where contracts, renewals, and approvals already live. Software is the layer that has been missing from all of it.</p>

<p>So today, we’re sharing our news: Freshworks has entered into a definitive agreement to acquire Torii. Freshservice is already where IT teams across industries and geographies run their day-to-day operations, and Torii extends that same footprint into software and AI spend.</p>

<p>Freshworks has spent years on the hardware and infrastructure side of the estate, and on the service desk that runs on top of it. The piece it has not had is software: which applications are actually in use, who is using them, what the licenses cost, and what AI is quietly running up in consumption charges. That is what we have spent nine years building. Put the two together and IT teams can manage all of it in one place instead of stitching it together across separate tools.</p>

<h2 id="what-this-means-for-customers">What this means for customers</h2>

<p>Between signing and closing, Torii operates as an independent company. Your instance, your integrations, your workflows, your support contacts and your renewal terms are exactly where they were yesterday. The roadmap has not changed, our product teams are working on the same projects they were working on last week, and we are still shipping and still signing new customers.</p>

<p>What changes over time is what stands behind the product. Freshservice already runs inside IT organizations around the world. The software and AI governance you bought from Torii will sit next to the service desk, the CMDB, and the asset management those teams use every day, instead of living in a separate tool somebody has to remember to open. Many of you brought Torii in when this problem was not on anyone’s priority list, and you argued for it internally before it was obvious. That is the reason we are here. Thank you. Once the deal closes, we’ll share more about what we’re building together.</p>

<p>If you have questions, please reach out to your Torii contact.</p>

<p><em>This post contains forward-looking statements. The transaction is subject to customary closing conditions, and there can be no assurance as to its timing or completion.</em></p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;Uri Haramati&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/uri-haramati.webp&quot;}</name></author><summary type="html"><![CDATA[Torii has entered into a definitive agreement to be acquired by Freshworks. CEO and co-founder Uri Haramati on why this is the right next step for our customers and our team.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/blog/torii-freshworks-acquisition.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/blog/torii-freshworks-acquisition.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The SaaS renewal playbook for 2027: negotiate with usage data, not gut feel</title><link href="https://www.toriihq.com/blog/the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut" rel="alternate" type="text/html" title="The SaaS renewal playbook for 2027: negotiate with usage data, not gut feel" /><published>2026-09-30T00:00:00+00:00</published><updated>2026-09-30T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut</id><content type="html" xml:base="https://www.toriihq.com/blog/the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut"><![CDATA[<h3 id="the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut-feel">The SaaS renewal playbook for 2027: negotiate with usage data, not gut feel</h3>

<p>For years, a SaaS renewal negotiation went roughly the same way. The vendor sent a quote a few weeks out. Someone checked it against last year’s invoice, asked for a few points off, and signed. The seat count rolled forward because nobody had time to argue with it.</p>

<p>That model is breaking, and Microsoft is the clearest example of why. Its July 2026 price increase is the one on every renewal calendar this winter. But the change that did the most to your bargaining position happened eight months before that, and it came with a lot less noise.</p>

<p>Here’s the uncomfortable part. The vendor walks into the call knowing how many seats you bought and how many people actually log in. Most buyers walk in with last year’s invoice and a spreadsheet called something like <code class="language-plaintext highlighter-rouge">licenses_FINAL_v3</code>.</p>

<p>This piece is about closing that gap. It covers what to pull 90 days before a renewal, how to model the tier mix and the metered charges, what to ask for and when, and what to write into the contract. Microsoft is the worked example because it’s the renewal everyone is watching. The method is meant for every renewal on your list.</p>

<h3 id="microsofts-2026-price-increase-started-in-november">Microsoft’s 2026 price increase started in November</h3>

<p>On November 1, 2025, Microsoft removed its Level B through D volume discounts on Enterprise Agreement and MPSA online-services renewals (<a href="https://www.microsoft.com/en-us/licensing/news/online-services-pricing-consistency-update">Microsoft Licensing</a>). Those tiers used to reward larger customers with a lower per-seat price. The change doesn’t bite on the day it was announced. It takes effect at your next agreement renewal or new purchase, with on-premises and Government/Education excluded.</p>

<p>SoftwareOne estimated the impact on affected EA and MPSA customers at 6 to 12% (<a href="https://www.softwareone.com/en/blog/articles/2025/08/14/microsoft-pricing-model-updates">SoftwareOne</a>). That’s a third-party estimate, not a Microsoft figure, but it gives you the order of magnitude. And it lands before the July list prices even enter the math.</p>

<p>Then came the headline change. On July 1, 2026, Microsoft’s US commercial list prices moved like this (<a href="https://www.microsoft.com/en-us/copilot/blog/2025/12/04/advancing-microsoft-365-new-capabilities-and-pricing-update/">Microsoft 365 Blog</a>; <a href="https://www.uscloud.com/blog/microsoft-365-price-increase-july-1-2026-what-enterprise-buyers-need-to-know-part-1/">US Cloud</a>):</p>

<ul>
  <li>Office 365 E3: $23 to $26 per user per month (13%)</li>
  <li>Microsoft 365 E3: $36 to $39 (8%)</li>
  <li>Microsoft 365 E5: $57 to $60 (5%)</li>
  <li>F3: $8 to $10</li>
</ul>

<p>Put the two together and the picture changes. If you’re on an EA or MPSA and your renewal falls in the Q4 or January cluster, your quote can carry both increases at once: the lost volume discount and the new list price. A team that budgeted 5% for its E5 renewal because that’s the number in the press coverage is probably budgeting low.</p>

<p>Two caveats before going further. These are US list prices, and very few large customers pay list. And the November change applies only to EA and MPSA (<a href="https://www.microsoft.com/en-us/licensing/news/online-services-pricing-consistency-update">Microsoft Licensing</a>). If you buy through a Cloud Solution Provider or on an MCA-E, your price and discount are set by the partner and aren’t published anywhere, so treat the numbers here as a way to size the change, not a quote.</p>

<p>None of this is secret. Some licensing advisers have written about the November-to-July connection. What your reseller’s renewal email usually won’t do is hand you the numbers you’d need to push back on it. Those numbers come from license tracking, and our comparison of <a href="/articles/five-enterprise-software-license-management-tools">enterprise software license management tools</a> shows which tools track Microsoft agreements and which track SaaS seats.</p>

<h3 id="pull-four-numbers-90-days-before-the-renewal">Pull four numbers 90 days before the renewal</h3>

<p>Ninety days gives you time to find the problems, fix some of them, and still have a position before the vendor’s quote arrives. If you’d rather have software start that clock, our comparison of <a href="/articles/seven-best-renewal-management-software">renewal management software</a> scores seven tools on lead time and usage data. Four numbers do most of the work.</p>

<p><strong>Active users vs. licensed seats.</strong> How many seats you pay for, and how many people used the product in the last 30 or 90 days. One way I’ve heard the gap put is “owned vs. used vs. assigned,” and it’s a useful split: seats you bought, seats assigned to a person, and seats that person actually uses. Each gap has a different fix.</p>

<p><strong>Last-login distribution.</strong> A single average hides the story. You want the spread: how many users logged in this week, this month, this quarter, and not at all. The long tail of people who haven’t logged in for 90 days is where the easy savings sit.</p>

<p><strong>Feature usage by tier.</strong> A premium seat is only worth it if the person uses the premium features. For Microsoft, that means knowing who actually touches the capabilities that separate E5 from E3.</p>

<p><strong>Contract value vs. invoiced spend.</strong> What the contract says you committed to, against what you were actually billed. Mid-term additions, true-ups and add-ons drift, and the renewal quote usually starts from the higher number.</p>

<p>What does this kind of pull turn up? Our benchmark report puts license non-utilization across a dozen widely deployed enterprise apps between 24% for Slack and 55% for Salesforce (<a href="https://www.toriihq.com/saas-benchmark-annual-report-2026">Torii</a>). Read that as seats not earning their keep rather than a precise, defined rate; the report doesn’t publish its method. It also doesn’t include Microsoft, so don’t carry those percentages over to your 365 estate. The same report found about 2.5% of seats in paid apps still assigned to people who had left the company (<a href="https://www.toriihq.com/saas-benchmark-annual-report-2026">Torii</a>). That’s roughly 1 in 40, sitting on an invoice, belonging to nobody.</p>

<p>Your numbers won’t match these. But almost nobody’s come back clean.</p>

<h3 id="match-each-seat-to-the-tier-it-needs">Match each seat to the tier it needs</h3>

<p>Once you know who uses what, you can model the tier mix. This is where Microsoft’s price gaps matter more than the increase itself.</p>

<p>At the new US list prices (<a href="https://www.microsoft.com/en-us/copilot/blog/2025/12/04/advancing-microsoft-365-new-capabilities-and-pricing-update/">Microsoft 365 Blog</a>), Microsoft 365 E5 costs $21 per user per month more than E3, or $252 a year. E3 costs $29 a month more than F3.</p>

<p>Here’s an illustrative example, using list prices. Take a company with 1,000 users, all on E5. The July increase from $57 to $60 adds $36,000 a year to that bill. Now say the usage pull shows 200 of those users never touch an E5-only feature. Moving them to E3 saves 200 × $252, or $50,400 a year.</p>

<p>Right-sizing a fifth of the seats saves more than the entire price increase. That’s the argument for doing the tier work before arguing about the sticker price.</p>

<p>The same logic runs down to F3, Microsoft’s frontline tier. It’s far cheaper and far more limited, so check what each group of users actually does before moving anyone. A blended model, meaning the count of seats on each tier multiplied by its price, is what you take into the call.</p>

<p>One trap sits inside E5. Security Copilot is included with Microsoft 365 E5 and E7 as a monthly capacity allowance: 400 Security Compute Units per 1,000 licensed users, with no rollover (<a href="https://learn.microsoft.com/en-us/copilot/security/security-copilot-inclusion">Microsoft Learn</a>). Unused units disappear at the end of the month. That’s worth knowing in both directions. If you cut E5 seats, you also cut the allowance. If your security team leans on Security Copilot heavily, the allowance may run out, which matters for the next section.</p>

<h3 id="model-the-metered-charges-as-a-range">Model the metered charges as a range</h3>

<p>Seat prices are the easy part to forecast. The harder part is anything billed by consumption.</p>

<p>Microsoft has announced a pay-as-you-go rate of $6 per SCU for Security Copilot usage beyond the included allowance. As of this writing, it isn’t live. Microsoft says it will start “at a future date,” with 30 days’ notice (<a href="https://learn.microsoft.com/en-us/copilot/security/security-copilot-inclusion">Microsoft Learn</a>). You’ll see some renewal coverage describe it as an active charge. Microsoft’s own page says otherwise, and it’s worth checking before you budget against it.</p>

<p>So how do you plan for a charge that doesn’t exist yet? As a range, not a number. Your low case assumes you stay inside the allowance. Your high case assumes your heaviest month of use continues after the overage switches on. If the 1,000-seat example above ran 100 SCUs over its 400 in a month, that’s $600 a month at the announced rate. Small on its own; not small once agents and other metered tools stack on top.</p>

<p>That stacking is the bigger pattern. More software is shifting to a seat price plus a usage charge, and the usage part is what surprises finance mid-year. I covered who ends up owning that bill in “FY2027 is the year finance takes over the AI budget,” the previous part of this series. For renewals, the practical step is simpler: give every metered line a floor and a ceiling, and show finance both.</p>

<h3 id="run-the-negotiation-in-a-set-order">Run the negotiation in a set order</h3>

<p>With the numbers in hand, the sequence matters as much as the asks.</p>

<p><strong>Start with utilization.</strong> Open with what you use, not with what you’d like to pay. “We have 1,000 E5 seats and 200 of them don’t use E5 features” is a different conversation from “can you do better on price?” It turns the call from a discount request into a correction of the bill.</p>

<p><strong>Then ask for flexibility, not just a lower rate.</strong> Two terms carry most of the value:</p>

<ul>
  <li><strong>Swap rights</strong>, so you can move seats between tiers during the term as usage changes</li>
  <li><strong>True-down rights</strong>, so you can reduce seat counts at set points instead of only adding them</li>
</ul>

<p>A discount helps once. These terms keep helping every time your headcount or usage shifts.</p>

<p><strong>Then time the ask.</strong> Vendor sales teams work to quarterly and annual targets, and a deal that closes inside the period counts toward them. For Microsoft, aim to have your position ready well before its fiscal year closes, and before the end of whichever quarter your renewal falls near. Getting your numbers together in the final week of the quarter is too late to be useful.</p>

<h3 id="write-the-terms-into-the-contract">Write the terms into the contract</h3>

<p>A good call is worth nothing if the terms don’t make it onto paper. Four clauses do most of the protecting:</p>

<ul>
  <li><strong>Price caps</strong> on renewal increases, stated as a percentage</li>
  <li><strong>True-down</strong> at defined dates, with the minimum seat count spelled out</li>
  <li><strong>Benchmark clauses</strong> that let you revisit pricing if the market moves</li>
  <li><strong>Notice periods</strong> long enough to run this whole 90-day process before auto-renewal kicks in</li>
</ul>

<p>Microsoft’s own language shows why term length is a pricing decision. Its FAQ on the 2026 changes says: “Customers on existing multi-year agreements will continue at their current pricing until renewal” (<a href="https://www.microsoft.com/en-us/licensing/news/2026-m365-packaging-pricing-updates-faq">Microsoft Licensing</a>).</p>

<p>Read that from the other side. A multi-year agreement protects you from repricing during the term, and the full weight of every change lands on the day it renews. So the price you lock in this winter is the base for the next cycle too. If the tier mix is wrong at signing, you’re locking in the wrong mix at the new price.</p>

<h3 id="repeat-it-for-the-rest-of-your-top-ten">Repeat it for the rest of your top ten</h3>

<p>Microsoft is the example, not the whole job. The same four numbers work for any renewal: seats against active users, the login spread, tier fit, and contract value against invoiced spend.</p>

<p>The benchmark range above suggests where to look next. If a widely deployed app can sit anywhere from roughly a quarter to over half non-utilized (<a href="https://www.toriihq.com/saas-benchmark-annual-report-2026">Torii</a>), your other large renewals probably deserve the same pull. Rank them by renewal date and contract value, and start the clock 90 days out for each.</p>

<p>The hard part is getting the data together, especially across ten vendors with ten admin consoles. Torii is one way to do that. For Microsoft 365 Copilot specifically, it syncs purchased, assigned, and unassigned seats, plus prompts and active days over 7, 28, 90, and 180-day windows (<a href="https://product-updates.toriihq.com/">Torii Product Updates</a>).</p>

<p>So start with one. Find your largest renewal in the next six months, count back 90 days, and put the seat pull on the calendar for that date. If the 90-day mark has already passed, pull the numbers anyway. A late count still tells you which tier mix to ask for, and it’s cheaper to find the wrong mix now than to lock it in for another term.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><category term="Cost Optimization" /><summary type="html"><![CDATA[For years, a SaaS renewal negotiation went roughly the same way. The vendor sent a quote a few weeks out. Someone checked it against last year's invoice,…]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/the-saas-renewal-playbook-for-2027-negotiate-with-usage-data-not-gut.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">11 Ways to Use Torii’s AI Management Platform</title><link href="https://www.toriihq.com/blog/11-ways-to-use-toriis-ai-management-platform" rel="alternate" type="text/html" title="11 Ways to Use Torii’s AI Management Platform" /><published>2026-09-28T00:00:00+00:00</published><updated>2026-09-28T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/11-ways-to-use-toriis-ai-management-platform</id><content type="html" xml:base="https://www.toriihq.com/blog/11-ways-to-use-toriis-ai-management-platform"><![CDATA[<p>Your company runs on AI now. ChatGPT in marketing, Cursor in engineering, Claude in legal, and a Lovable app someone in RevOps built over a weekend that half the sales team now depends on. The bills are real and they keep climbing. The visibility? Not so much.</p>

<p><a href="/products/ai-management-platform">Torii’s AI Management Platform</a> closes that gap. It pulls AI usage and spend from browser-based tools, developer CLIs, vendor admin APIs, and the integrations you already run. Then it cross-references everything against your HRIS, your identity provider, and your financial data, so you get one live view of who is using what, what it costs, and whether it’s paying off.</p>

<figure><img src="/assets/images/articles/ai-11-uses-00-cost-overview.webp" alt="Torii AI Cost Overview showing total AI cost for the last 30 days, the cost contribution split by category, and the AI spend trend with a forecast" width="1600" height="1200" loading="lazy" /></figure>

<p>The AI Module hit general availability on September 3, 2026, and the updates haven’t slowed down since. Here are 11 ways to put it to work, from the first “wait, we use <em>how</em> many AI tools?” moment all the way to governing the apps your non-engineers are vibe coding.</p>

<p><strong>The 11 at a glance</strong></p>

<ol>
  <li>Find every AI tool in the building</li>
  <li>Put a name and a team on every dollar</li>
  <li>Break your AI bill into the four ways AI charges you</li>
  <li>Forecast next quarter’s AI spend before the budget fight</li>
  <li>Give every department its own AI spend story</li>
  <li>Learn what your power users know</li>
  <li>Get full value out of every AI seat</li>
  <li>Coach adoption instead of just counting it</li>
  <li>Bring engineering’s AI coding agents into view</li>
  <li>Go deep on any single AI vendor</li>
  <li>Bring vibe coding out of the shadows</li>
</ol>

<h2 id="part-1-see-it-then-price-it">Part 1: See it, then price it</h2>

<h3 id="1-find-every-ai-tool-in-the-building">1. Find every AI tool in the building</h3>

<p>You can’t manage what you can’t see, and AI is the fastest-growing blind spot in the stack. Torii’s own data found 694 new AI-native apps in 2025, and 26 of the top 50 shadow apps are pure-play AI. Odds are good some of them are already running in your org.</p>

<p style="font-size:14px;line-height:1.5;color:#555;margin-top:-0.5em;">Source: <a href="/reports/saas-benchmark-annual-report-2026">Torii SaaS Benchmark Annual Report 2026</a>, covering January to December 2025.</p>

<p>Torii maps your AI footprint from four directions at once:</p>

<ul>
  <li><strong>The Torii AI Lens browser extension</strong> picks up SaaS AI platforms like OpenAI, ChatGPT, Claude, Cursor, Lovable, and Base44.</li>
  <li><strong>AI Telemetry</strong> tracks developer CLIs like Claude Code, Gemini CLI, and Codex.</li>
  <li><strong>Vendor admin APIs</strong> bring in what each vendor actually bills you.</li>
  <li><strong>Integrations you already have</strong> do double duty. Microsoft 365, for example, now feeds Copilot adoption data with zero extra setup.</li>
</ul>

<p>That includes the tools nobody expensed. Torii flags unapproved AI in active use, even when it never touched a corporate card.</p>

<figure><img src="/assets/images/articles/ai-11-uses-01-find-every-ai-tool.webp" alt="Torii AI Integrations page listing connected sources such as Claude Code, Codex CLI, Gemini CLI, Cursor, and Microsoft 365, with the status and last sync time for each" width="1600" height="1200" loading="lazy" /></figure>

<p><strong>Why it matters:</strong> your AI inventory stops being a guess. IT, security, and finance all start from the same list.</p>

<h3 id="2-put-a-name-and-a-team-on-every-dollar">2. Put a name and a team on every dollar</h3>

<p>A big AI invoice raises one question fast: <em>who did this?</em> Torii answers it. Usage and spend are cross-referenced against your HRIS and identity provider, so every token rolls up to a person, a department, a manager, and a cost center.</p>

<p>And for the spend that doesn’t belong to any one person? The Cost Overview now has an <strong>Unattributed</strong> category. Click it and you get a breakdown by tool that explains why the cost landed there: org-level API usage, service accounts and automations, or credits billed at the workspace level. No more mystery line items.</p>

<figure><img src="/assets/images/articles/ai-11-uses-02-name-every-dollar.webp" alt="Torii AI Cost Overview with a Spend by department donut chart grouped by Workday department, next to a Top AI tools table showing each tool's category, cost, and share of total" width="1600" height="1200" loading="lazy" /></figure>

<p><strong>Why it matters:</strong> chargebacks and budget conversations start with facts instead of finger-pointing.</p>

<h3 id="3-break-your-ai-bill-into-the-four-ways-ai-charges-you">3. Break your AI bill into the four ways AI charges you</h3>

<p>AI doesn’t bill like SaaS. One tool charges per seat, another burns credits, a third meters every API call. Torii’s <strong>Cost Overview</strong> shows your total AI cost and splits it into:</p>

<ul>
  <li><strong>Subscriptions</strong> (the seats you pay for every month)</li>
  <li><strong>On-demand credits</strong> (usage that runs past the plan)</li>
  <li><strong>API and platform costs</strong> (metered model usage)</li>
  <li><strong>Vibe coding</strong> (credits on platforms like Lovable)</li>
</ul>

<figure><img src="/assets/images/articles/ai-11-uses-03-four-ways-ai-charges.webp" alt="Torii AI Cost Overview showing total AI cost and a cost contribution bar split into Subscriptions, On-demand, API and Platform, and Vibe coding" width="1600" height="900" loading="lazy" /></figure>

<p>Here’s the insight that makes this view so useful: as an AI program matures, spend tends to shift from subscriptions toward API and on-demand usage. Watching that mix over time tells you where your program actually is, not just what it costs.</p>

<p>For Cursor, OpenAI, Claude Platform, and Claude.ai, Torii syncs billed costs straight from the vendor admin APIs, daily, in USD. That’s the real invoice number, not an estimate.</p>

<p><strong>Why it matters:</strong> you can explain your AI bill in one slide, and you can see which cost model is growing fastest.</p>

<h3 id="4-forecast-next-quarters-ai-spend-before-the-budget-fight">4. Forecast next quarter’s AI spend before the budget fight</h3>

<p>Torii tracks your AI spend over time and projects where it’s headed, so you know which numbers you’ll be debating next quarter before the meeting gets booked.</p>

<figure><img src="/assets/images/articles/ai-11-uses-04-forecast-spend.webp" alt="Torii AI spend trend chart showing monthly actuals, the current month estimate, and a dotted forecast line with a hover card for a future month" width="1600" height="900" loading="lazy" /></figure>

<p>Two recent updates make this a finance team favorite:</p>

<ul>
  <li><strong>Finance-aligned time periods.</strong> Pick “Last month,” “Quarter to date,” or “Last quarter” to line up AI reporting with vendor invoices and your close.</li>
  <li><strong>Export any AI Module table to CSV.</strong> Spend tables, adoption dashboards, and connected tool data drop straight into your planning model.</li>
</ul>

<p><strong>Why it matters:</strong> AI spend becomes something you plan for, not something that surprises you.</p>

<h2 id="part-2-understand-the-people-behind-the-usage">Part 2: Understand the people behind the usage</h2>

<h3 id="5-give-every-department-its-own-ai-spend-story">5. Give every department its own AI spend story</h3>

<p>Every team uses AI differently, and Torii’s department breakdown shows exactly how. Pick a team and see its top AI tools, whether each one is billed on demand or by subscription, and where the money goes.</p>

<p>Take a sales team, for example. You might expect a CRM copilot to top their list. Instead, most of their spend is in Cursor, with a sizable Lovable bill right behind it. That’s not a problem to shut down. It’s a signal that reps are building their own tools, and it’s the start of a much better conversation with the sales leader.</p>

<figure><img src="/assets/images/articles/ai-11-uses-05-department-story.webp" alt="Torii Spend by department chart with the Sales slice opened into a Top AI tools panel, where Cursor leads and Lovable follows" width="1600" height="1200" loading="lazy" /></figure>

<p><strong>Why it matters:</strong> department heads get a clear, specific picture of their AI footprint, and you walk into every budget review with context.</p>

<h3 id="6-learn-what-your-power-users-know">6. Learn what your power users know</h3>

<p>Every organization has AI power users. Torii shows you who they are and what they’re actually doing.</p>

<figure><img src="/assets/images/articles/ai-11-uses-06a-power-users.webp" alt="Torii AI Adoption table ranking users by token value, with change versus the previous period, a usage trend line, percentile, tokens, and sessions" width="1600" height="1000" loading="lazy" /></figure>

<p>Open any individual’s AI profile and you’ll see:</p>

<ul>
  <li>Total token value, sessions, requests, and tokens used</li>
  <li>Activity over time</li>
  <li>Their <strong>model mix</strong> compared to the org average, thanks to the new model heatmap</li>
</ul>

<p>The heatmap works at the team level too. The Adoption Groups view lays out groups against models, so you can spot which teams lean on premium models and click into any cell to see who’s driving it. Filter by provider, and switch between token share, absolute tokens, and value.</p>

<figure><img src="/assets/images/articles/ai-11-uses-06b-adoption-groups-heatmap.webp" alt="Torii model mix by department heatmap showing each department's share of tokens per model, with one cell's detail popup open" width="1600" height="1000" loading="lazy" /></figure>

<p><strong>Why it matters:</strong> your power users are your best playbook. Find what they do well, then spread it.</p>

<h3 id="7-get-full-value-out-of-every-ai-seat">7. Get full value out of every AI seat</h3>

<p>AI seats are expensive, and an idle one is money on fire. Torii’s <strong>subscription efficiency</strong> metric shows how much value each person gets from their license. Subscriptions hand out tokens at a different rate than API billing, so this number tells you whether a seat is a great deal or a quiet waste.</p>

<figure><img src="/assets/images/articles/ai-11-uses-07a-subscription-efficiency.webp" alt="Torii Subscription Efficiency gauge showing token value gained per dollar spent on subscriptions" width="1600" height="1067" loading="lazy" /></figure>

<p>From there, right-sizing gets easy:</p>

<ul>
  <li><strong>Spot the extremes.</strong> Surface inactive licenses, users on the wrong tier, and people ready for an upgrade.</li>
  <li><strong>Catch idle seats early.</strong> Developer CLI tracking flags seats with no activity after 30 days. Microsoft 365 Copilot tracking flags seats unused for 90+ days, along with purchased, assigned, and unassigned counts.</li>
  <li><strong>Take action automatically.</strong> Revoke, reassign, or notify without a ticket queue. With the new ChatGPT Enterprise integration, Torii workflows can invite, remove, change roles for, and manage group membership of ChatGPT members.</li>
  <li><strong>Keep seat data fresh.</strong> Claude.ai Enterprise members, seat tiers, spend limits, and pending invites now sync nightly through Anthropic’s Admin API.</li>
</ul>

<figure><img src="/assets/images/articles/ai-11-uses-07b-m365-copilot-seats.webp" alt="Torii Microsoft 365 Copilot page showing assigned, unassigned, active, and dormant seats, plus where Copilot is used across Teams, Outlook, Word, and other apps" width="1600" height="1067" loading="lazy" /></figure>

<p><strong>Why it matters:</strong> you pay for the AI people use, and the savings show up at renewal.</p>

<h3 id="8-coach-adoption-instead-of-just-counting-it">8. Coach adoption instead of just counting it</h3>

<p>AI adoption isn’t a straight line. Some people can’t wait to try every new model. Others hold back, because of their role or just how they approach new tech. Both groups need attention, and the earlier you talk to them, the better.</p>

<p>Torii gives you three views to work from:</p>

<ul>
  <li><strong>The Usage dashboard</strong> shows company-wide token value, active users, sessions, tokens, daily model use, and an auto-generated AI summary.</li>
  <li><strong>The Adoption dashboard</strong> breaks adoption down by department or org hierarchy and calls out the biggest movers.</li>
  <li><strong>The AI Pulse dashboard</strong> is the live view: active users right now, AI calls per minute, token value rate, and a projection for the day, all over a continuously refreshing window of roughly the last five minutes. It even includes a map of where active users are and a “Model Pulse” that shows which models are busiest.</li>
</ul>

<figure><img src="/assets/images/articles/ai-11-uses-08-ai-pulse.webp" alt="Torii AI Pulse dashboard with live active users, AI calls per minute, token value rate, and projected spend for the day, plus an active user wall, Model Pulse, top cost drivers, and a world map" width="1600" height="1067" loading="lazy" /></figure>

<p>The aggregate view also highlights the people making the most efficient use of their tokens. Those are your champions for the rest of the company.</p>

<p><strong>Why it matters:</strong> you can run an AI enablement program on data. Find the champions, find the stragglers, and help both.</p>

<h2 id="part-3-go-deeper-where-ai-moves-fastest">Part 3: Go deeper where AI moves fastest</h2>

<h3 id="9-bring-engineerings-ai-coding-agents-into-view">9. Bring engineering’s AI coding agents into view</h3>

<p>Some of your heaviest AI usage never shows up in a browser. It runs in the terminal. Torii tracks LLM token usage from developer CLIs, including <strong>Claude Code, Gemini CLI, Codex CLI, and GitHub Copilot Chat in VS Code</strong>, across macOS, Linux, and Windows.</p>

<p>For each session, Torii captures the user, the model, input and output tokens, and errors. For Claude Code, it also records which tools and MCP servers ran, so security can see what agents are actually doing. The <strong>Productivity dashboard</strong> adds engineering signals like commits and code changes.</p>

<figure><img src="/assets/images/articles/ai-11-uses-09-engineering-productivity.webp" alt="Torii Engineering Productivity dashboard showing active AI coding users, AI-assisted commits and pull requests, lines changed, and per-user commit and code change charts" width="1600" height="1067" loading="lazy" /></figure>

<p>And it’s built to earn developer trust. Prompt contents are off by default, model responses are never captured, and there’s no keystroke logging, screen capture, or shell history collection. Roll it out however suits your team: through MDM (Jamf, Kandji, Intune, JumpCloud, and more), through an existing OpenTelemetry collector, or with a one-liner install for a quick pilot.</p>

<p><strong>Why it matters:</strong> engineering AI spend gets the same attribution and governance as everything else, without slowing anyone down.</p>

<h3 id="10-go-deep-on-any-single-ai-vendor">10. Go deep on any single AI vendor</h3>

<p>Sometimes you need to zoom all the way in. Open any AI application in Torii and get the full picture for that vendor.</p>

<p>Open OpenAI, for example, and you’ll see how many members you have, projects ranked by spend, your daily spend rate, the last 30 days of spend, and recent billing history. Claude Platform costs break down by model and workspace. Microsoft 365 Copilot shows prompts and active days over 7, 28, 90, and 180 days, plus usage across Teams, Outlook, and the rest of Office.</p>

<figure><img src="/assets/images/articles/ai-11-uses-10-openai-app-page.webp" alt="Torii OpenAI app page showing spend for the last 30 days, available credit, top projects by spend, spend by model, and daily spend" width="1600" height="1067" loading="lazy" /></figure>

<p>Torii also keeps the data honest. If an AI source stops collecting, it shows a <strong>Failed</strong> status so you can fix the gap fast. If a custom OpenAI key expires or hits a rate limit, AI Settings tells you exactly what went wrong.</p>

<p><strong>Why it matters:</strong> vendor reviews and renewals come with real usage behind them, not a sales rep’s slide.</p>

<h3 id="11-bring-vibe-coding-out-of-the-shadows">11. Bring vibe coding out of the shadows</h3>

<p>This is where things get exciting. Vibe coding gave non-engineers a superpower: anyone can build a working app in an afternoon. Until now, most organizations had no idea what those apps were, who used them, or what they connected to.</p>

<p>Torii changes that. For platforms like Lovable, you can see your credits, your spend, and a breakdown of your published apps. Then it goes a level deeper. The <strong>Integrations</strong> tab maps every internal app to the systems it connects to. One app might touch GitHub, Gong, and Segment. Another might reach into AWS, Gong, and Slack. Flip the view around to see every internal app connected to a single system, like GitHub.</p>

<figure><img src="/assets/images/articles/ai-11-uses-11a-lovable-app-page.webp" alt="Torii Lovable app page showing credits remaining, total projects, published apps, team members, top projects by cost, credit breakdown by source, and daily activity" width="1600" height="1067" loading="lazy" /></figure>

<p>Connect Lovable or Base44 to Torii and each internal app becomes a regular Torii app. You see who has access and how many users it has, user lists stay in sync automatically, and the apps flow into your existing offboarding, access reviews, and reports.</p>

<p><strong>Why it matters:</strong> security knows exactly where to start, IT can set policy it can measure against, and your builders keep building.</p>

<h2 id="one-platform-every-ai-question-answered">One platform, every AI question answered</h2>

<p>Those 11 use cases add up to one shift: AI goes from something that happens <em>to</em> your company to something you actively run. IT gets the inventory. Finance gets numbers that match the invoice. Security gets a map. And leadership finally gets a straight answer to “is this AI spend worth it?”</p>

<p><strong>Bonus:</strong> you don’t even need to open a dashboard to get answers. The Torii MCP Server is now an official connector in Claude’s connector directory, so you can bring Torii data right into your AI conversations.</p>

<p>Ready to see your whole AI footprint in one place? <strong><a href="/request-a-demo">Book a demo</a></strong> and find out what’s really running in your company.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><category term="AI" /><summary type="html"><![CDATA[Torii's AI Management Platform gives you one live view of who is using which AI tools, what it costs, and whether it's paying off. Here are 11 ways to put it to work.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/ai-11-uses-00-hero.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/ai-11-uses-00-hero.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">AI is the Industrial Utility of Today</title><link href="https://www.toriihq.com/blog/ai-is-the-industrial-utility-of-today" rel="alternate" type="text/html" title="AI is the Industrial Utility of Today" /><published>2026-09-22T00:00:00+00:00</published><updated>2026-09-22T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/ai-is-the-industrial-utility-of-today</id><content type="html" xml:base="https://www.toriihq.com/blog/ai-is-the-industrial-utility-of-today"><![CDATA[<p>This week, we heard from multiple prospects all looking for one thing: track and control what AI costs, down to tokens, users, and projects, and put everything else on the maybe-later pile.</p>

<p>A year ago, those same conversations would have been a mix of offboarding, license use monitoring, and NHI detection. But today, it’s all AI.</p>

<p>One CTO said that tracking their monthly LLM costs was like “open brain surgery.” Another put it more simply: they had been early adopters of AI, and now those bills were becoming a massive liability.</p>

<h3 id="ai-is-not-a-feature-its-a-utility">AI is not a feature, it’s a utility</h3>

<p>AI consumption is the only number that matters, and it’s also the only number nobody can see.</p>

<p>Software used to be a fixed cost. You negotiated it once a year, signed, and the number sat still until renewal. You bought 500 seats, used 180, and argued about the difference twelve months later. Painful, but predictable. The decision that set the bill was made at signature.</p>

<p>A utility doesn’t work that way. You don’t buy it, you draw on it. It meters by consumption, it scales with usage rather than headcount, and it runs whether or not anyone is watching. The bill isn’t decided at signature. It’s decided every day, by behaviour, by thousands of small choices nobody logged.</p>

<p>That’s the shift. The buying unit used to be seats. Now it’s tokens. And the control point moved with it: procurement governed software, but metering is the only thing that governs a utility. You cannot negotiate your way out of a consumption curve.</p>

<p>Which is the problem, because a monthly bill for tokens tells you almost nothing. You don’t know who the heavy users are. You don’t know which teams or use cases are driving it. You don’t know whether the spend was worth it. You don’t even know what next month looks like. You just know the bill is growing.</p>

<h3 id="the-steam-engine-was-never-the-expensive-part">The steam engine was never the expensive part</h3>

<p>Nobody remembers what a steam engine cost. Ask an industrialist in 1870 about the price of the engine and you’d get a shrug. The engine was a one-time line item that stopped mattering the day it was installed. The fight that decided who won was over coal. Priced per ton, burned forever.</p>

<p>And the operators who pulled ahead weren’t the ones who negotiated the cheapest ton. They were the ones who learned to read what a ton of coal actually produced, output per ton, before their competitors could read it, and before the instruments that measured it were standard equipment.</p>

<p>That’s the part worth borrowing. Not “tokens are the new coal,” which is a fine line and a taken one. Palantir’s Shyam Sankar said it almost verbatim on the <a href="https://www.fool.com/earnings/call-transcripts/2026/05/04/palantir-pltr-q1-2026-earnings-transcript/">Q1 2026 earnings call</a>, and every FinOps vendor has said it since. The narrower lesson is the one that mattered in 1870: the price of the input is the easy half, and the operators who win are the ones who read the output half first.</p>

<p>Tokens are further along that curve than coal ever was on day one, which is exactly the trap. The input meter is already precise. You can look up <a href="https://www.cloudzero.com/blog/anthropic-claude-api-pricing/">published list rates</a> to the million tokens, Claude Sonnet 5 at $2 in and $10 out, Opus 5 at $5 in and $25 out. Compared to the old seat math, a per-token price reads clean. It reads like the problem got simpler.</p>

<p>It didn’t. It moved.</p>

<h3 id="the-input-meter-is-nearly-built-the-output-meter-isnt">The input meter is nearly built. The output meter isn’t.</h3>

<p>Two questions get blurred together, and the difference between them is the whole thing.</p>

<p>The first is what did we spend and who spent it. That’s cost attribution, and it’s getting solved. Not finished, but close enough that you can see the finish line from here. FinOps Foundation’s <a href="https://data.finops.org/">State of FinOps 2026</a> found that <a href="https://www.linuxfoundation.org/press/state-of-finops-survey-ai-value-and-skills-top-priorities-as-finops-matures-across-technology-value-98-manage-ai-90-saas-64-licensing-48-data-center-1">98% of practitioners now manage AI spend, up from 31% two years ago</a>. The same report names granular AI-spend monitoring, tokens and requests and GPU, as the top-cited missing capability.</p>

<p>Read that carefully, because it’s easy to misuse. The gap they’re describing is finer metering on the cost side. Even the input meter isn’t fully installed yet. That tells you the easy half is nearly done, not that the hard half has started.</p>

<p>The second question is what did the spend buy. And that one has no meter at all.</p>

<p>It shows up the moment the CFO question changes, which it already has. It used to be “what are we spending on AI.” Now it’s “what did we get for it,” and the answer is mostly silence: <a href="https://www.uctoday.com/productivity-automation/senior-leaders-ai-roi-study/">only about 7% of senior leaders report established AI ROI</a>. Ninety-three out of a hundred can increasingly tell you the bill and cannot tell you the return.</p>

<p>That gap isn’t a pricing problem. It’s a measurement problem, and the instrument for it hasn’t been built.</p>

<h3 id="the-spend-moves-fast-enough-to-matter">The spend moves fast enough to matter</h3>

<p>Look at the spread rather than the average. <a href="https://ramp.com/blog/ai-token-cost-for-businesses">Ramp’s 2026 business spend data</a> puts median monthly AI spend at $2,246 and average monthly AI spend at $140,842.</p>

<p>Sit with that for a second. The median company spends about the price of a decent laptop each month. The mean is dragged two orders of magnitude higher by companies running orchestrated, agentic workloads. That spread is the entire risk profile of the category. One unchecked agentic workflow is how you travel from the median to the mean without anyone filing a purchase order.</p>

<p>The mix underneath it is moving the same direction. On the same Ramp data, premium models account for 45.8% of tokens but <a href="https://ramp.com/data/ai-index-august-2026">55.9% of AI cost</a>, up from a rounding error a year earlier. And the cost of a single interaction has climbed with the shape of the work: roughly <a href="https://www.silicondata.com/blog/llm-cost-per-token">$0.04 for a single 2023 linear call</a>, roughly <a href="https://spendark.com/blog/machine-learning-cloud-cost/">$1.20 for a 2026 orchestrated agentic task</a>. About 30x.</p>

<p>The mechanism isn’t exotic. <a href="https://www.cloudzero.com/blog/anthropic-claude-api-pricing/">Output tokens cost exactly five times input tokens across the entire Claude lineup</a>, and an agentic task consumes <a href="https://neuralwired.com/2026/06/20/gartner-llm-inference-cost-enterprise/">5 to 30 times the tokens of a single chatbot turn</a>. A tool that talks back and forth to itself twenty times before answering is not twenty questions. It’s one question with a bill that fans out.</p>

<p>Gartner has put a stake in the ground on where this heads. In June 2026 it predicted <a href="https://www.gartner.com/en/newsroom/press-releases/2026-06-24-gartner-predicts-ai-coding-costs-will-surpass-average-developer-salary-by-2028-as-token-consumption-surges">AI coding token costs will surpass the average developer’s salary by 2028</a>. Two months later it went further, predicting <a href="https://www.gartner.com/en/newsroom/press-releases/2026-08-17-gartner-predicts-ai-inference-costs-per-agentic-workflow-will-increase-more-than-fivefold-through-2028">AI inference costs per agentic workflow will rise more than fivefold through 2028</a>, with a warning worth keeping in one line: product leaders cannot rely on more efficient token economics to rationalise AI costs.</p>

<p>The cheap tokens get cheaper. The expensive work gets more expensive and less predictable. The average hides both.</p>

<h3 id="two-instruments-one-wall">Two instruments, one wall</h3>

<p>The input meter reads price times volume. It’s nearly finished, it’s improving, and it’s the half every vendor is racing to perfect.</p>

<p>The output meter reads what the spend produced. Per token, per user, per project, across every AI tool actually in use. That instrument doesn’t exist as a product yet.</p>

<p>And the place it’s darkest is the place IT never approved. The AI tools people adopted on their own, the shadow AI stack, where the spend is real and the attribution is nothing.</p>

<p>That’s the ground worth naming, because it’s the ground the current tools don’t cover. Cloud FinOps platforms like <a href="https://www.cloudzero.com/platform/ai-hub/">CloudZero</a> and <a href="https://www.vantage.sh/solutions/ai-workflows">Vantage</a> do genuinely deep token attribution, but they face engineering and infrastructure and stop at the infrastructure layer rather than spanning the application layer or the tools nobody filed a ticket for. SaaS management peers work the other side of the house, the procurement and approved-spend layer. <a href="https://zylo.com/product/ai-consumption-cost-management">Zylo’s AI Consumption Cost Management</a> shipped in 2026, alongside <a href="https://www.vertice.one/platform/ai-cost-optimization">Vertice</a> and <a href="https://productiv.com/platform/">Productiv</a>. <a href="https://www.flexera.com/about-us/press-center/flexera-launches-ai-cost-management-platform-to-address-growing-ai-cost-crisis">Flexera calls itself the only complete AI cost management platform</a>, and it’s infrastructure-first.</p>

<p>Line them up and the coverage map has a hole in the exact shape of the question buyers are walking in with: token and user and project, across many AI tools, including the ones nobody approved, read from an IT or ITAM seat. That’s where an output meter would have to live, and it’s where none of them live yet.</p>

<h3 id="so-what-did-the-token-buy">So what did the token buy?</h3>

<p>Nobody can tell you yet. That’s the point.</p>

<p>Every AI tool can already tell you what a token cost. None of them can tell you what it bought, and the second number is the only one that was ever worth having.</p>

<p>The industrial analogy makes one more prediction, and I don’t have the answer to it. Coal got its output metrics eventually. Thermal efficiency, cost per horsepower-hour, all of it became standard, and the edge that came from reading output first went away once everyone could read it.</p>

<p>So the real question isn’t whether someone builds the output meter for tokens across the whole stack, shadow AI included. Someone will. It’s whether the years before they do are long enough, and the edge wide enough, that reading output first is worth as much now as it was for the operators who learned to read a ton of coal before their rivals could.</p>

<p>I don’t know. But the people who dropped everything else to ask are betting it is.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><category term="AI" /><summary type="html"><![CDATA[Two buyers this week asked what a token costs before they asked what their SaaS costs. The unit of concern moved.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/ai-is-the-industrial-utility-of-today.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/ai-is-the-industrial-utility-of-today.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">974 patches in one Tuesday. 2026 has already doubled the worst year on record, with a quarter still to go.</title><link href="https://www.toriihq.com/blog/974-patches-in-one-tuesday-2026-has-already-doubled-the-worst-year" rel="alternate" type="text/html" title="974 patches in one Tuesday. 2026 has already doubled the worst year on record, with a quarter still to go." /><published>2026-09-08T00:00:00+00:00</published><updated>2026-09-08T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/974-patches-in-one-tuesday-2026-has-already-doubled-the-worst-year</id><content type="html" xml:base="https://www.toriihq.com/blog/974-patches-in-one-tuesday-2026-has-already-doubled-the-worst-year"><![CDATA[<h3 id="microsofts-974-patches-in-september-the-troubling-trend-for-vulnerability-management">Microsoft’s 974 patches in September: The troubling trend for vulnerability management</h3>

<p>For most IT teams, Patch Tuesday was a monthly chore with a familiar shape. Microsoft published its fixes, security sorted them by severity, and ops pushed them through testing and out to machines. The volume shifted, but it stayed within a range you could plan staffing around.</p>

<p>That model is breaking. Microsoft’s September release fixed at least 974 flaws in one day, and its year-to-date count has already passed the previous annual record, with a full quarter to go. The industry-wide numbers are climbing too.</p>

<h4 id="microsoft-shipped-974-fixes-in-one-day">Microsoft shipped 974 fixes in one day</h4>

<p>On September 8, Microsoft patched at least 974 vulnerabilities, 113 of them rated critical, its largest Patch Tuesday on record, according to <a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs on Security</a>. Two were zero-days already under attack: CVE-2026-81963 and CVE-2026-85880, both Windows privilege-escalation flaws (<a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs on Security</a>).</p>

<p>That’s the headline most outlets ran. The more useful number is what came before it.</p>

<h4 id="four-months-of-releases-show-a-trend">Four months of releases show a trend</h4>

<p>Here are Microsoft’s monthly counts this summer, all from Krebs: roughly 200 in <a href="https://krebsonsecurity.com/2026/06/a-record-breaking-patch-tuesday-for-june-2026/">June</a>, 570 in <a href="https://krebsonsecurity.com/2026/07/microsoft-patches-a-record-570-security-flaws/">July</a>, 398 in <a href="https://krebsonsecurity.com/2026/08/microsoft-plugs-nearly-400-security-holes/">August</a> and 974 in <a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">September</a>.</p>

<figure class="patch-chart" style="margin:32px 0;">
<div style="font-size:17px;line-height:1.4;font-weight:700;color:#333;text-align:left;margin-bottom:8px;">Microsoft vulnerabilities patched per Patch Tuesday, 2026</div>
<svg viewBox="0 0 640 284" width="100%" role="img" aria-labelledby="pc1-desc" style="display:block;max-width:720px;height:auto;">
<desc id="pc1-desc">Column chart of Microsoft vulnerabilities patched each Patch Tuesday in 2026: roughly 200 in June, 570 in July, 398 in August and 974 in September.</desc>
<g stroke="#e5e7eb" stroke-width="1"><line x1="48" x2="624" y1="196.5" y2="196.5" /><line x1="48" x2="624" y1="143" y2="143" /><line x1="48" x2="624" y1="89.5" y2="89.5" /><line x1="48" x2="624" y1="36" y2="36" /></g>
<line x1="48" x2="624" y1="250" y2="250" stroke="#c3c2b7" stroke-width="1" />
<g fill="#6b7280" font-size="13" text-anchor="end" style="font-variant-numeric:tabular-nums;"><text x="40" y="254">0</text><text x="40" y="200.5">250</text><text x="40" y="147">500</text><text x="40" y="93.5">750</text><text x="40" y="40">1,000</text></g>
<g fill="#6b7280" font-size="14" text-anchor="middle"><text x="120" y="274">June</text><text x="264" y="274">July</text><text x="408" y="274">August</text><text x="552" y="274">September</text></g>
<g fill="#0054FF">
<g><title>June 2026: roughly 200 vulnerabilities patched</title><rect x="84" y="30" width="72" height="220" fill="transparent" /><path d="M108 250V211.2Q108 207.2 112 207.2H128Q132 207.2 132 211.2V250Z" /></g>
<g><title>July 2026: 570 vulnerabilities patched</title><rect x="228" y="30" width="72" height="220" fill="transparent" /><path d="M252 250V132Q252 128 256 128H272Q276 128 276 132V250Z" /></g>
<g><title>August 2026: 398 vulnerabilities patched</title><rect x="372" y="30" width="72" height="220" fill="transparent" /><path d="M396 250V168.8Q396 164.8 400 164.8H416Q420 164.8 420 168.8V250Z" /></g>
<g><title>September 2026: 974 vulnerabilities patched, 113 rated critical</title><rect x="516" y="20" width="72" height="230" fill="transparent" /><path d="M540 250V45.4Q540 41.4 544 41.4H560Q564 41.4 564 45.4V250Z" /></g>
</g>
<g fill="#333" font-size="15" font-weight="700" text-anchor="middle" stroke="#fff" stroke-width="5" stroke-linejoin="round" paint-order="stroke"><text x="120" y="199">~200</text><text x="264" y="120">570</text><text x="408" y="157">398</text><text x="552" y="33">974</text></g>
</svg>
<figcaption style="font-family:inherit;font-size:14px;line-height:1.5;color:#555;text-align:left;margin-top:8px;">Source: Krebs on Security, Patch Tuesday coverage for <a href="https://krebsonsecurity.com/2026/06/a-record-breaking-patch-tuesday-for-june-2026/">June</a>, <a href="https://krebsonsecurity.com/2026/07/microsoft-patches-a-record-570-security-flaws/">July</a>, <a href="https://krebsonsecurity.com/2026/08/microsoft-plugs-nearly-400-security-holes/">August</a> and <a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">September</a> 2026. June figure is approximate.</figcaption>
<details style="margin-top:8px;font-size:14px;text-align:left;"><summary>View data as a table</summary><table><thead><tr><th>Patch Tuesday (2026)</th><th>Vulnerabilities patched</th></tr></thead><tbody><tr><td>June</td><td>~200</td></tr><tr><td>July</td><td>570</td></tr><tr><td>August</td><td>398</td></tr><tr><td>September</td><td>974</td></tr></tbody></table></details>
</figure>

<p>The line isn’t smooth. August came in below July, so this isn’t a curve bending steadily upward. But the direction over four months is hard to miss.</p>

<p>The running total makes the point more plainly. Microsoft has patched more than 2,600 CVEs so far in 2026, more than double the 1,245 it patched in 2020, the previous record year (<a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs on Security</a>). Krebs calls this the worst year on record, and October, November and December haven’t happened yet.</p>

<figure class="patch-chart" style="margin:32px 0;">
<div style="font-size:17px;line-height:1.4;font-weight:700;color:#333;text-align:left;margin-bottom:8px;">Microsoft CVEs patched: 2026 so far vs. the 2020 full-year record</div>
<svg viewBox="0 0 640 136" width="100%" role="img" aria-labelledby="pc2-desc" style="display:block;max-width:720px;height:auto;">
<desc id="pc2-desc">Bar chart: Microsoft patched 1,245 CVEs in all of 2020, the previous record year, and more than 2,600 in 2026 through September.</desc>
<line x1="512" x2="512" y1="20" y2="112" stroke="#c3c2b7" stroke-width="1" />
<text x="512" y="130" fill="#6b7280" font-size="13" text-anchor="middle">2× the 2020 total</text>
<g><title>2020, full year (previous record): 1,245 CVEs patched</title><rect x="0" y="24" width="640" height="36" fill="transparent" /><path fill="#a8a6a0" d="M180 30H342Q346 30 346 34V50Q346 54 342 54H180Z" /></g>
<g><title>2026, January to September: more than 2,600 CVEs patched</title><rect x="0" y="72" width="640" height="36" fill="transparent" /><path fill="#0054FF" d="M180 78H522.7Q526.7 78 526.7 82V98Q526.7 102 522.7 102H180Z" /></g>
<line x1="180" x2="180" y1="20" y2="112" stroke="#c3c2b7" stroke-width="1" />
<g fill="#555" font-size="15" text-anchor="end"><text x="168" y="47">2020 (full year)</text><text x="168" y="95">2026 (to Sept.)</text></g>
<g fill="#333" font-size="15" font-weight="700"><text x="354" y="47">1,245</text><text x="534" y="95">2,600+</text></g>
</svg>
<figcaption style="font-family:inherit;font-size:14px;line-height:1.5;color:#555;text-align:left;margin-top:8px;">Source: <a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs on Security</a>, September 2026. 2026 total is year to date through the September 8 release.</figcaption>
<details style="margin-top:8px;font-size:14px;text-align:left;"><summary>View data as a table</summary><table><thead><tr><th>Period</th><th>Microsoft CVEs patched</th></tr></thead><tbody><tr><td>2020, full year (previous record)</td><td>1,245</td></tr><tr><td>2026, through September 8</td><td>More than 2,600</td></tr></tbody></table></details>
</figure>

<p>For a team that sized its patch process around 2020, that means more than twice the work flowing through what’s likely the same testing windows, and probably the same people.</p>

<h4 id="microsoft-blames-ai-and-firsts-forecast-points-the-same-way">Microsoft blames AI, and FIRST’s forecast points the same way</h4>

<p>Microsoft’s explanation for the surge is AI-aided vulnerability discovery: better tooling finding more flaws in its code (<a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs on Security</a>). That’s Microsoft’s account of Microsoft’s numbers, and nobody outside the company has verified it. It’s also a slightly awkward thing to announce. The good news is the bug-finding got much faster; the bad news is whose bugs they are.</p>

<p>The second signal comes from somewhere else entirely. In June, FIRST, the forum of incident response and security teams, published a mid-year forecast covering every vendor, not only Microsoft (<a href="https://www.first.org/newsroom/releases/20260615">FIRST.org</a>). It contains two numbers that are easy to blur together, so here they are separately.</p>

<ul>
  <li><strong>The forecast moved up.</strong> FIRST now expects about 66,000 CVEs across the industry in 2026, up from the 59,427 it forecast in February. That’s a revision of roughly 11%.</li>
  <li><strong>Reality is ahead of the old forecast.</strong> Actual CVE disclosures were running 46.3% ahead of what the February forecast projected for that point in the year.</li>
</ul>

<p>The second figure is the one I’d pay attention to. It compares what actually got disclosed against the path FIRST itself expected, and the gap is wide. Both are mid-year figures, and they’re the most recent FIRST has published.</p>

<p>Keep the two signals apart. FIRST’s forecast says nothing about Microsoft, and Microsoft’s explanation says nothing about the industry. Neither explains the other. They’re two independent readings pointing the same direction: a lot more vulnerabilities are being found and published.</p>

<h4 id="volume-is-climbing-faster-than-firsts-risk-filtered-tally">Volume is climbing faster than FIRST’s risk-filtered tally</h4>

<p>But here’s the catch. The same FIRST release filters the pile down to vulnerabilities with real-world risk signals. That means entries in CISA’s Known Exploited Vulnerabilities catalog or an EPSS score above 10% (FIRST’s threshold for “likely to matter” in real-world context). On that filtered view, FIRST says the patching burden “has not materially increased, despite the surge in raw volume” (<a href="https://www.first.org/newsroom/releases/20260615">FIRST.org</a>).</p>

<p>EPSS, the Exploit Prediction Scoring System, estimates a probability of exploitation; it isn’t a record of attacks, and FIRST’s counts date from May. What FIRST is saying is that the slice of vulnerabilities flagged as most likely to matter hasn’t grown in step with the total. But the dangerous fraction is shrinking relative to volume, which makes it harder to find, not easier to manage.</p>

<p>September’s two exploited zero-days might seem to contradict this, but they don’t. Two actively exploited flaws inside a release of 974 fits the pattern FIRST’s numbers imply: a small number of dangerous vulnerabilities sitting inside a much larger pile of ones that carry little near-term risk on their own. A flat aggregate doesn’t mean no month contains live exploits. It means the dangerous fraction is shrinking relative to everything around it, which makes it harder to find.</p>

<p>FIRST’s own people frame it the same way. Éireann Leverett, FIRST’s liaison, put it this way: “The challenge for defenders is no longer the discovery of vulnerabilities; it’s the capacity to verify, coordinate, and prioritize them at a scale the industry has never seen before” (<a href="https://www.first.org/newsroom/releases/20260615">FIRST.org</a>). Jerry Gamblin, a co-author of EPSS, was blunter: “In 2026, the rain doesn’t stop. The job is no longer counting the drops. It’s knowing which ones will overrun the levee” (<a href="https://www.first.org/newsroom/releases/20260615">FIRST.org</a>).</p>

<p>So the planning problem is a search problem. Finding the exploitable few gets harder as the pile grows, and that search starts with knowing what you’re running.</p>

<h4 id="microsoft-is-one-software-provider-in-a-stack-of-hundreds">Microsoft is one software provider in a stack of hundreds</h4>

<p>Everything above is about Microsoft or the industry total. Your exposure depends on your own stack, and Microsoft is one entry in it.</p>

<p><a href="https://www.toriihq.com/saas-benchmark-annual-report-2026">Our 2026 SaaS Benchmark report</a> found the average organization runs 831 discovered applications (median 680), and the average enterprise with 4,000 or more employees runs 2,191. Those counts cover the whole discovered inventory: sanctioned apps, shadow IT, and apps that are blocked or still under review.</p>

<p>Most of those apps will never ask you to patch anything. A typical SaaS tool gets fixed by its provider on its own servers, and the customer never sees an update. So I’m not arguing that patch work scales with app count. It shouldn’t.</p>

<p>The obligation sits in a smaller, harder-to-see group: on-prem components, self-hosted instances, agents installed on endpoints, browser extensions. Those are the places where a vendor’s fix does nothing until someone on your side applies it.</p>

<p>Which raises the question the benchmark can’t answer. With hundreds or thousands of discovered apps in a typical stack, how many teams could actually name which ones carry a Microsoft-style patch obligation? Our report counts apps, not how each one is hosted, so it doesn’t measure how big that group is. My guess is that most teams couldn’t answer quickly, because the people who own the patch queue and the people who own the app inventory are often different teams, and the shadow part of the inventory frequently has no owner at all.</p>

<p>That’s why this lands well outside the security team. Security can triage a list of CVEs, but it can’t triage an app nobody knows is installed. The IT or ITAM lead owns the list that says what’s there. And the finance lead pays for all of it in hours, because every fix that needs testing and deploying is somebody’s time, and Microsoft’s volume alone has more than doubled.</p>

<p>An application discovery tool is one way to build the first half of that answer. Torii, for example, maintains an inventory of discovered applications across sanctioned and shadow IT, which is where the benchmark figures above come from. It doesn’t scan for vulnerabilities, track patch status or classify apps by hosting type, so it tells you what’s there, and someone still has to work out which of those apps need patching on your side.</p>

<h4 id="a-quarter-is-left-in-a-year-that-has-already-doubled-the-record">A quarter is left in a year that has already doubled the record</h4>

<p>Three Patch Tuesdays remain in 2026. Even three quiet months would leave it as Microsoft’s biggest year by a wide margin, since the total is already more than double 2020’s.</p>

<p>The standard advice this cycle, which Tenable’s Satnam Narang also gave in <a href="https://krebsonsecurity.com/2026/09/microsoft-plugs-nearly-1000-security-holes/">Krebs’s coverage</a>, is to prioritize remediation by risk context rather than volume. That’s right as far as it goes, but prioritizing assumes you already have the list.</p>

<p>FIRST’s numbers say the risky slice is holding roughly steady. Microsoft says the pile around it keeps growing. Next year, will vulnerability management budgets go to patching faster, or to finding out what there is to patch in the first place?</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><category term="SaaS Management" /><summary type="html"><![CDATA[For most IT teams, Patch Tuesday was a monthly chore with a familiar shape. Microsoft published its fixes, security sorted them by severity, and ops pushed…]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/974-patches-in-one-tuesday-2026-has-already-doubled-the-worst-year.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/974-patches-in-one-tuesday-2026-has-already-doubled-the-worst-year.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Google shipped hard monthly spend caps for AI agents</title><link href="https://www.toriihq.com/blog/2637-05-google-shipped-hard-monthly-spend-caps-for-ai-agents-the-5th" rel="alternate" type="text/html" title="Google shipped hard monthly spend caps for AI agents" /><published>2026-09-02T00:00:00+00:00</published><updated>2026-09-02T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/2637-05-google-shipped-hard-monthly-spend-caps-for-ai-agents-the-5th</id><content type="html" xml:base="https://www.toriihq.com/blog/2637-05-google-shipped-hard-monthly-spend-caps-for-ai-agents-the-5th"><![CDATA[<p>This summer, the companies that sell you AI tokens shipped spend cap after spend cap. Five of them, same season, same handful of vendors.</p>

<p>Not a coordinated announcement. Not one big FinOps push. A steady drip of native cost controls, one vendor after another, all landing between June and August. Once you notice the rhythm, the rhythm is the story.</p>

<h3 id="whos-building-the-meter">Who’s building the meter?</h3>

<p>The people who sell the tokens.</p>

<p>Count the native spend controls across the major model-and-cloud vendor surfaces this summer, one per surface, and you get five. OpenAI added them to ChatGPT Enterprise on Jun 18. Anthropic shipped an Enterprise Spend Limits API for Claude on Jul 2. OpenAI brought hard project and org limits back to its API on Jul 22. AWS added cost controls to Bedrock AgentCore on Aug 6. Google shipped hard monthly spend caps to Gemini Enterprise on Aug 26.</p>

<p>Five, from Jun 18 to Aug 26. About ten weeks. Same season, same handful.</p>

<p>The exact count is soft, and I’ll say so. The inclusion rule is strict: one native spend control per major model-or-cloud vendor surface. Loosen it and the number goes up, not down. Anthropic shipped a session-budget control too. GitHub Copilot added budgets. Cloudflare’s AI Gateway has spend controls of its own. Count those and the cadence gets faster, never slower.</p>

<p>So the ordinal is a footnote. The cadence is the fact: the companies whose revenue is the meter running spent the summer building the switch to cap it.</p>

<h3 id="are-these-even-the-same-kind-of-control">Are these even the same kind of control?</h3>

<p>No. There are two philosophies.</p>

<p>Anthropic and AWS bound a <em>run</em>. The limit sits on a session or a per-agent execution, and it fires when a single agent burns through its budget mid-task. OpenAI and Google bound a <em>billing period</em>. The limit is a monthly cap on the project or org, and it fires when the bill for the month crosses a line.</p>

<p>Bound-the-run versus bound-the-billing-period. Same anxiety, an agent doing something expensive when nobody’s watching, and two bets on where to put the brake. One vendor thinks the danger is a single runaway execution. The other thinks it’s the slow accumulation over thirty days.</p>

<p>What both bets share: each brake stops at the vendor’s own wall. AWS can cap a Bedrock run because AWS can see the Bedrock run. It cannot see the Gemini one. Google can cap a Gemini project because Google bills it, and has no idea what that same team spends on Claude.</p>

<h3 id="did-all-five-vendors-freshly-build-these">Did all five vendors freshly build these?</h3>

<p>Not quite. At least two are re-ships.</p>

<p>This is the tell worth slowing down on. OpenAI’s Jul 22 API control isn’t new. OpenAI had hard API spend caps, removed them earlier in 2026, and brought them back on Jul 22. Its Jun 18 ChatGPT Enterprise control isn’t net-new either. It’s a migration of an existing weekly limit to a monthly one. Anthropic, AWS, and Google are genuinely net-new to those surfaces. OpenAI, on two of the five, is adjusting a meter it already had.</p>

<p>That’s the part a pundit reading only the August release notes can’t write. Picture OpenAI shipping the hard cap, quietly removing it earlier in 2026, then reinstalling it in July and taking a bow for the new safety feature. A seller that can pull a hard spend cap and put it back whenever it suits the billing is telling you something plain: the meter isn’t a fixed customer-protection feature. It’s a dial the seller turns toward its own billing interest, on its own schedule. Which is exactly why a seller-built meter can’t be the buyer’s number. The buyer doesn’t control when it exists.</p>

<h3 id="so-the-meter-builders-are-marginal-players-you-can-ignore">So the meter-builders are marginal players you can ignore?</h3>

<p>The opposite. They’re already everywhere.</p>

<p>The same handful shipping these caps already sit in nearly every stack we see. OpenAI and Anthropic each show up in about 96% of those stacks, Gemini in about 82%, detected via SSO, finance, and browser extension, so read those as detection floors, not exact usage.</p>

<p>One clause of daylight, because it matters. That presence is of the <em>brand</em>. We detect that OpenAI, Anthropic, and Google are in the building. We are not detecting use of the specific agent or API surface each cap governs, the Bedrock AgentCore workload, the Vertex or Gemini Enterprise project, the raw OpenAI API. Presence is not proof the cap already binds anything. It establishes the one thing the argument needs: the vendors writing the meters are not niche. They’re the default.</p>

<p>And when the top work surface joins the cadence, the signal is loudest. Google Workspace is already the #2 app in our Adoption Index, ahead of Slack, Atlassian, and Microsoft 365, and that’s behavioral adoption, where work happens, not a spend ranking. So when <em>that</em> vendor ships a spend cap, it’s the surface most of your people already live on adding a meter.</p>

<h3 id="whats-the-actual-problem-with-five-good-meters">What’s the actual problem with five good meters?</h3>

<p>They’re bounded. Every one of them.</p>

<p>This is the whole thing, and it’s an argument from how the controls are scoped, not a number we measured. Each of the five caps is scoped to something the vendor bills: a project, a billing account, an API key, an org. That’s correct engineering. A cloud vendor <em>should</em> let you cap a project. Nobody built a bad meter here.</p>

<p>But name the dichotomy the scoping creates. Per-vendor wall versus cross-vendor question. Every shipped control is bounded by one vendor’s billing surface. The buyer’s real question crosses all of them and lands on a person: what does <em>this employee</em> cost across OpenAI, Claude, and Gemini, added up. None of the five meters can answer that. None can see the other two, and none was built to join spend to a named human.</p>

<p>I’ll concede the near miss, because it’s real. Cross-vendor cost <em>aggregation</em> already exists. CloudZero, Vantage, and Finout roll up multi-vendor spend, typically drawing on the vendors’ own Cost APIs. What none of those produce, and what the key-, project-, and account-scoped meters structurally can’t produce, is the join to the individual: what one named person costs across every model they touch. The aggregators sum accounts. The meters cap projects. The gap is specifically the human.</p>

<p>And a buyer went looking in exactly that gap. One prospective buyer deprioritized the entire SaaS-governance category to ask us a single thing: what does each employee cost in OpenAI, Claude, and Gemini tokens, across all three. Five vendors spent the summer shipping per-vendor meters. A buyer walked in asking for the number that lives between them.</p>

<h3 id="so-who-wins">So who wins?</h3>

<p>Genuinely unresolved.</p>

<p>Two candidate units of account, and I don’t know which one takes over. There’s the vendor’s per-project billing meter: native, scoped, shipping fast, five deep in one summer. And there’s a cross-vendor, per-employee view of what each person costs across every model they touch, which nobody ships natively and which the buyer keeps asking for.</p>

<p>Maybe the per-project meter is enough. For a lot of orgs it might be, and the cross-vendor per-employee view stays a nice-to-have that never becomes the unit anyone budgets against. Or maybe the number that decides headcount and tooling is the one that crosses every wall and lands on a person, and the vendor meters end up as five inputs to a join none of them will ever make.</p>

<p>The vendors have placed their bet: the meter they own, scoped to the surface they bill. The open question is whether that’s the unit the buyer ends up managing by. And if it isn’t, who ends up owning the number that crosses all five walls.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><summary type="html"><![CDATA[This summer, the companies that sell you AI tokens shipped spend cap after spend cap. Five of them, same season, same handful of vendors.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/2637-05-google-shipped-hard-monthly-spend-caps-for-ai-agents-the-5th.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/2637-05-google-shipped-hard-monthly-spend-caps-for-ai-agents-the-5th.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Your Offboarding Is Finished. The Bot They Built Is Still Running.</title><link href="https://www.toriihq.com/blog/non-human-identity-sprawl" rel="alternate" type="text/html" title="Your Offboarding Is Finished. The Bot They Built Is Still Running." /><published>2026-08-19T00:00:00+00:00</published><updated>2026-08-19T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/non-human-identity-sprawl</id><content type="html" xml:base="https://www.toriihq.com/blog/non-human-identity-sprawl"><![CDATA[<h3 id="you-revoked-their-sso-the-bot-they-built-is-still-running">You revoked their SSO. The bot they built is still running.</h3>

<p>An engineer leaves. IT does what it always does: disables the account in Okta, pulls the SSO grants, reclaims the laptop. On paper, the person is gone.</p>

<p>In practice, the Slack bot they wired to a shared channel is still posting. The Zapier connection they authorized still moves data between two apps every night. The AI agent they handed a service account to still has its access, and nobody remembers it exists.</p>

<p>None of those were tied to their SSO login. They were separate credentials, OAuth grants, integration tokens, an agent’s key, created directly against the apps. Deprovisioning a person doesn’t touch them. So the tokens sit there. No owner, no review, no expiry. Live.</p>

<p>That is the gap offboarding misses. You can revoke a person cleanly and still leave a trail of working machine identities behind them. The customers we hear from already have names for what that produces:</p>

<p><i>“orphaned after projects end,”</i></p>

<p><i>“service account sprawl,”</i></p>

<p><i>“invisible, ungoverned, and overprivileged”.</i></p>

<h3 id="how-bad-is-the-sprawl-really">How bad is the sprawl, really?</h3>

<p>Bad, and worse than anyone can agree on.</p>

<p>Non-human identities now outnumber human ones by a wide margin, and the count is climbing fast. But the exact ratio depends entirely on what you measure, and where. Different vendors offer widely different counts on how many NHIs are running through your org:</p>

<figure class="wp-block-image"><img src="/assets/images/articles/reported-nhi-count.webp" alt="Reported non-human identity to human ratios by vendor, ranging from 17:1 to 144:1" /></figure>

<p>So the number is contested. Different vendors measure different environments with different methods, and the spread, 17:1 to 144:1 depending on the study, reflects that, not sloppiness. What none of them argue about is the direction. The non-human surface is now the larger one, AI agents are its fastest-growing slice, and it is compounding. Read 144:1 as the ceiling of a range, not a consensus.</p>

<h3 id="so-why-cant-your-sso-see-any-of-it">So why can’t your SSO see any of it?</h3>

<p>Because it was built to find people, and none of these are people.</p>

<p>Your SSO and IdP are built around people. They govern who a human is, what groups they belong to, what they can log into. Most identity tooling does that work, and does it well. That part is genuinely hard.</p>

<p>Here’s where it gets uncomfortable. It’s a human-identity model in a world that has gone non-human. When CyberArk surveyed the field, 88% of organizations defined only human users as privileged. The machine identities, the OAuth grant one SaaS app holds against another, the integration token, the Slack bot, the MCP server an agent runs through, never touch the IdP at all. They were provisioned directly, app to app. So when the IdP deprovisions a person, it reaches everything that person logged into and nothing they authorized on the side.</p>

<p>The industry conversation points the wrong way, too. Most writing about machine identity is cloud- and infrastructure-first: workload identity, Active Directory service accounts, secrets in a CI pipeline. That matters. But it steps right past the SaaS-app layer, the OAuth grants, integration tokens, bot tokens, and agents that live between the apps your company actually runs on. That layer is where a departing employee’s leftovers pile up. It is also the one nobody has claimed.</p>

<h3 id="what-does-governing-these-things-at-the-app-layer-actually-take">What does governing these things at the app layer actually take?</h3>

<p>The same three things you already give a human account.</p>

<p>None of this needs another vault or another scanner. Treat every token and agent at the SaaS-app layer the way you already treat a person: give it an owner, watch it for staleness, wire it into offboarding.</p>

<p><strong>Owner.</strong> The first question about any machine identity is the one nobody can usually answer: who created this, and who is accountable for it now? A token with no owner is a “decommission candidate,” in a customer’s own words. Attach a human owner to each grant and agent, and an anonymous credential becomes something you can review.</p>

<p><strong>Staleness.</strong> Is it still doing anything? “Hasn’t authenticated in six months but still has privileged access” is how one practitioner named the exact failure. Last-use data sorts the tokens that earn their access from the ones that are pure standing risk.</p>

<p><strong>Offboarding trigger.</strong> When a person leaves, their machine identities should surface as part of the same offboarding, the bot they built, the token they authorized, the agent they stood up. Then those credentials get a decision, instead of defaulting to “left running.”</p>

<p>This is where Torii sits. Our SaaS discovery already maps the app-to-app graph; it can see the OAuth grants and integration tokens between apps and attach a human owner and an offboarding trigger to each one. Visibility, ownership, and a trigger at the point of offboarding.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><summary type="html"><![CDATA[When an engineer leaves, IT revokes their SSO — but the Slack bot they wired up, the Zapier connection they authorized, and the AI agent they gave a service…]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/runaway-nhi.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/runaway-nhi.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Productiv Deleted Your Data. Here’s How to Rebuild Your SaaS Estate From Zero.</title><link href="https://www.toriihq.com/blog/productiv-deleted-your-data-rebuild-saas-estate-from-zero" rel="alternate" type="text/html" title="Productiv Deleted Your Data. Here’s How to Rebuild Your SaaS Estate From Zero." /><published>2026-08-11T00:00:00+00:00</published><updated>2026-08-11T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/productiv-deleted-your-data-rebuild-saas-estate-from-zero</id><content type="html" xml:base="https://www.toriihq.com/blog/productiv-deleted-your-data-rebuild-saas-estate-from-zero"><![CDATA[<p>Productiv announced its shutdown on August 2, 2026, and named August 6 as the sunset date. Operations did cease on August 6. But customer access to the platform ended on August 5 — a day earlier than announced, which cost some admins their last planned export window.</p>

<p>The data itself is not sitting in cold storage somewhere. Productiv’s site states that “all production systems, data stores, and backups have been permanently and securely destroyed. No customer data has been retained.” Productiv has never given a business reason for the shutdown.</p>

<p>One clarification, since the situation has been described loosely elsewhere: this was not a conventional bankruptcy. The public record shows that, effective June 25, 2026, Productiv, Inc. made a General Assignment for the Benefit of Creditors to PFS Productiv Liquidation LLC under California law, a state-law wind-down handled outside bankruptcy court in which a company’s assets pass to an assignee who liquidates them for creditors. Claims are being administered by Stretto, Inc. at <a href="https://cases.stretto.com/Productiv" rel="nofollow noopener" target="_blank">cases.stretto.com/Productiv</a>, with a filing deadline of December 22, 2026. If you think you have a claim, that deadline is the one to calendar. <span style="font-size:0.85em;">Source: the Stretto case page, which lists the assignor, assignee, effective date, governing law, and claims bar date.</span></p>

<p>Worth saying plainly: this was a hard week for the people who built Productiv, not just the people who bought it. A team lost their jobs, and a lot of admins lost a tool they genuinely liked and had staked internal credibility on.</p>

<p>If you’re one of those admins, the export advice everyone published in the first week — <a href="/blog/why-did-productiv-shut-down">including ours</a> — is now useless to you. So here is the version that still works: what’s actually gone, what you can rebuild, and how to get most of it back in 30 days.</p>

<h2 id="what-you-lost-versus-what-you-can-rebuild">What you lost versus what you can rebuild</h2>

<p>Be precise about this before you promise anything to your VP, because the two halves have very different timelines.</p>

<p><strong>Gone for good.</strong> Historical engagement and utilization trends — the multi-year record of who logged into what, how often, and how that curve moved. In-platform notes, tags, saved views, and workflow configuration. Your license-optimization baselines: the “we reclaimed 340 seats last year” numbers that justified the tool. Any benchmark data that was Productiv’s own, not yours. None of this exists anywhere. There is no backup, no escrow, no partner copy.</p>

<p><strong>Recoverable.</strong> Your application inventory. Your annual and monthly software spend. Contract terms, renewal dates, and notice periods. App owners and business sponsors. Purchased license counts. Vendor contacts. All of it lives in systems you still control — your identity provider, your finance stack, your contract repository, your endpoints. Productiv aggregated that data; it did not originate it.</p>

<p>That distinction matters commercially, too. If a vendor offers to “restore” or “recover” your Productiv usage history, they are selling you something that cannot be delivered. The honest offer is help reconstructing the recoverable half faster, and starting a new engagement baseline today.</p>

<h2 id="the-four-sources-that-get-you-to-90-coverage">The four sources that get you to ~90% coverage</h2>

<p>This is the core of the work. Four pulls, done in parallel by whoever owns each system, will reconstruct most of a mid-market or enterprise SaaS estate. Assign owners before you start — this stalls when one person tries to do all four.</p>

<ol>
  <li><strong>Your identity provider.</strong> Okta’s System Log, Entra ID sign-in logs, or the Google Workspace audit log will give you every app users authenticated into, with unique user counts and last-sign-in dates. In Okta, export the app list with assignment counts and pair it with 90 days of sign-in events; in Entra, pull the enterprise applications list plus sign-in logs. This is your fastest path to the sanctioned app list and often takes an afternoon. What it misses: anything not behind SSO. Departmental tools bought on a card, free tiers, tools with local logins, and most of the AI apps that arrived in the last 18 months. Shadow IT is defined by its absence from this list.</li>
  <li><strong>Your finance systems.</strong> Pull 24 months of vendor-level spend from the AP ledger (NetSuite, Coupa, or your ERP) plus corporate card and expense feeds (Ramp, Brex, Expensify). Filter on software and subscription GL codes, but also scan uncoded vendors — that’s where the surprises are. This is your only real source for spend, and your best source for apps IT never knew existed. The obstacle is vendor naming: card descriptors like ADOBE *ACROPRO, resellers and marketplaces (AWS Marketplace, SHI, Insight) that mask the actual product, and parent-brand line items that cover several apps at once. Budget real time for normalization; it’s the least glamorous and most valuable hour of this project.</li>
  <li><strong>Contracts and email.</strong> Your contract repository, DocuSign’s completed-envelope list, and the procurement and AP inboxes together reconstruct renewal dates, term lengths, auto-renewal notice windows, and purchased seat counts. Search the shared drive and inboxes for “order form,” “auto-renew,” “renewal notice,” and “MSA.” What it misses: month-to-month and click-through agreements, which usually have no paper at all and show up only in the finance pull.</li>
  <li><strong>Endpoint and browser signals.</strong> OAuth grants (Google Workspace third-party apps, Entra enterprise app consents), browser extension inventories from your MDM, and installed-application reports from Intune, Jamf, or Kandji. This is the layer that catches free and freemium tools — the AI assistants, the note-takers, the design tools — that never touch finance or SSO. It’s noisy and needs filtering, but it’s the only source that sees them.</li>
</ol>

<p>Then de-duplicate, and expect it to take longer than you think. The same app will appear in three sources under three names. Normalize on the vendor’s root domain rather than the display name, decide up front whether a suite counts as one app or several, and keep a single alias column so Atlassian, Jira, and JIRA SOFTWARE-ANNUAL collapse to one row. Do this once, deliberately, or you’ll ship an inventory with a 15% inflation rate and lose the room’s trust on the first review.</p>

<p>This four-source pull is what automated discovery does continuously rather than once.</p>

<aside class="art-cta art-cta--inline">
  <p class="art-cta__eyebrow">If a manual rebuild is not realistic</p>
  <p class="art-cta__title">Torii pulls the same four sources and keeps the inventory current</p>
  <p class="art-cta__body">Connect your identity provider and your finance system, and Torii reconstructs the app inventory, spend, contracts, owners, and license counts described above, then keeps collecting so your new baseline starts today. No agents, no services engagement, no implementation fee. <a href="/alternatives/productiv">See how Torii maps to what Productiv did</a>, or add your work email for a personalized demo on your own stack.</p>
  




<style>
  /* Functional CSS — always emitted; the JS depends on .spinner / .is-hidden */
  .hs-email-form .spinner {
    border: 2px solid #f3f3f3;
    border-top: 2px solid #3498db;
    border-radius: 50%;
    width: 18px;
    height: 18px;
    animation: hs-email-spin 1s linear infinite;
    display: inline-block;
    vertical-align: middle;
    margin-left: 10px;
  }
  @keyframes hs-email-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
  }
  .hs-email-form .is-hidden { display: none; }
  .hs-email-form .form-error {
    color: #ef4444;
    font-size: 0.875rem;
    margin-top: 0.5rem;
  }
</style>

<style>
  /* Presentational CSS — skipped when bare=true */
  .hs-email-form {
    background-color: #ffffff;
    border-radius: 1rem;
    transform-origin: top;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
  }
  .hs-email-form--boxed {
    border: 1px solid #3b82f6;
    padding: 2rem 1.5rem 1rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    max-width: 36rem;
  }
  .hs-email-form--plain {
    max-width: 42rem;
  }

  .hs-email-form .form-fields-container { display: flex; flex-direction: column; }
  .hs-email-form .form-row-wrapper { display: flex; gap: 0.75rem; align-items: flex-start; }

  .hs-email-form .form-input-email {
    height: 3rem;
    flex-grow: 1;
    padding-left: 1rem;
    padding-right: 1rem;
    min-width: 0;
    border: 1px solid #d1d5db;
    border-radius: 0.5rem;
    box-sizing: border-box;
  }
  .hs-email-form .form-input-email:focus { outline: none; border-color: #3b82f6; }

  .hs-email-form .form-submit-button {
    height: 3rem;
    padding-left: 1.25rem;
    padding-right: 1.25rem;
    font-weight: 600;
    color: #1e2e4a;
    background-color: #ffffff;
    border-radius: 0.5rem;
    border: 1px solid #c4c9d5;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    transition-property: color, background-color, border-color;
    transition-duration: 150ms;
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
    cursor: pointer;
    font-size: 16px !important;
    outline: none;
    flex-shrink: 0;
  }
  .hs-email-form .form-submit-button:hover { background-color: #0077ff; color: #ffffff; }
  .hs-email-form .form-submit-button:focus,
  .hs-email-form .form-submit-button:active { outline: none; }

  @media (max-width: 640px) {
    .hs-email-form .form-row-wrapper { flex-direction: column; gap: 0.75rem; }
    .hs-email-form .form-submit-button { width: 100%; }
  }
</style>


<script>
(function () {
  // Init-once guard: safe even if this block is emitted more than once.
  if (window.__toriiHsEmailFormInit) return;
  window.__toriiHsEmailFormInit = true;

  var ENRICH_URL = "https://torii--hubspot-assign-assignserver-serve.modal.run/enrich";
  var DEFAULT_REDIRECT = "/book-demo";
  var FRESHWORKS_REDIRECT = "/torii-freshworks-contact";
  var PORTAL_ID = "4265482";
  var HS_FORM_ID = "7e08202e-6b18-47a0-91ef-385cc6f58bba";

  var commonPersonalDomains = [
    "mail.com", "mac.com", "inbox.com", "alice.it", "tin.it", "virgilio.it", "libero.it",
    "live.co.uk", "live.fr", "live.it", "rediff.com", "indiatimes.com", "mail.ru",
    "bk.ru", "list.ru", "inbox.ru", "email.com", "usa.com", "europe.com", "asia.com", "africamail.com"
  ];

  var bannedDomains = new Set([
    'gmail', 'yahoo', 'outlook', 'hotmail', 'aol', 'icloud', 'protonmail', 'zoho',
    'gmx', 'yandex', 'msn', 'comcast', 'verizon', 'cox', 'sbcglobal', 'ymail', 'rocketmail', 'fastmail',
    'tutanota', 'hushmail', 'optonline', 'bellsouth', 'earthlink', 'shaw', 'rogers', 'qq', 'naver', 'hanmail', 'daum', '163', '126', 'yeah',
    'lycos', 'bigpond', 'btinternet', 'blueyonder', 'ntlworld', 'talktalk', 'wanadoo', 't-online', 'laposte',
    'seznam', 'centrum', 'volny', 'sapo', 'terra', 'netcabo', 'gawab', 'rediffmail', 'proton', "baidu", "sina", "21cn", "139", "freenet", "telus", "charter", "fronter", "centurylink", "windstream",
    'mailinator', 'tempmail', '10minutemail', 'guerrillamail', 'throwawaymail', 'getnada', 'yopmail', 'trashmail', 'maildrop', 'moakt', 'fakeinbox', 'mailnesia',
    'mintemail', 'spambog', 'dispostable', 'spamgourmet', 'emailondeck', 'anonaddy', 'inboxkitten', 'burnermail', 'sharklasers', 'spam4.me', 'mytempemail', "temp-mail", "mohmal", "dropmail", "getairmail"
  ]);

  function getUTMParams() {
    var p = new URLSearchParams(window.location.search);
    return {
      utm_source: p.get('utm_source') || '',
      utm_medium: p.get('utm_medium') || '',
      utm_content: p.get('utm_content') || '',
      utm_campaign: p.get('utm_campaign') || ''
    };
  }
  function isValidEmailFormat(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); }
  function clean(v) { return v && v.trim() !== "" ? v.trim() : null; }
  function containsBannedKeyword(email) {
    var domain = email.split('@')[1] ? email.split('@')[1].split('.')[0].toLowerCase() : '';
    return bannedDomains.has(domain);
  }
  function isWorkEmail(email) {
    var parts = email.split('@');
    if (parts.length !== 2) return false;
    return commonPersonalDomains.indexOf(parts[1].toLowerCase()) === -1;
  }
  function getHubSpotUserToken() {
    var cookies = document.cookie.split('; ');
    var find = function (prefix) {
      var row = cookies.find(function (r) { return r.indexOf(prefix) === 0; });
      return row ? row.split('=')[1] : null;
    };
    return find('hubspotutk=') || find('__hstc=') || null;
  }

  // Wire ONE form, using elements found relative to that form — no global IDs.
  function wire(form) {
    if (form.dataset.hsWired) return;   // don't double-bind
    form.dataset.hsWired = '1';

    var isSubmitting = false;           // per-form, not shared
    var spinner = form.querySelector('.spinner');
    var errorEl = form.querySelector('.form-error');
    var redirect = form.getAttribute('data-redirect') || DEFAULT_REDIRECT;

    form.addEventListener('submit', function (e) {
      e.preventDefault();
      if (isSubmitting) return;
      isSubmitting = true;

      var email = form.email.value.trim();
      if (errorEl) errorEl.textContent = "";
      if (spinner) spinner.classList.remove("is-hidden");

      function fail(msg) {
        if (errorEl) errorEl.textContent = msg;
        if (spinner) spinner.classList.add("is-hidden");
        isSubmitting = false;
      }

      if (!isValidEmailFormat(email)) return fail("Please use a valid email address");
      if (containsBannedKeyword(email)) return fail("Please use a work email, not personal one");
      if (!isWorkEmail(email)) return fail("Please use a work email, not personal one");

      // Freshworks (acquiring Torii) staff skip HubSpot, enrichment, and lead routing.
      var emailDomain = email.split('@')[1].toLowerCase();
      if (emailDomain === "freshworks.com" || /\.freshworks\.com$/.test(emailDomain)) {
        window.location.replace(FRESHWORKS_REDIRECT);
        return;
      }

      var hutk = getHubSpotUserToken();
      var utm = getUTMParams();
      var fields = [{ name: "email", value: email }];
      ['utm_source', 'utm_medium', 'utm_content', 'utm_campaign'].forEach(function (k) {
        if (clean(utm[k])) fields.push({ name: k, value: clean(utm[k]) });
      });

      var payload = {
        fields: fields,
        context: Object.assign(
          { pageUri: window.location.href, pageName: document.title },
          hutk ? { hutk: hutk } : {}
        )
      };

      fetch("https://api.hsforms.com/submissions/v3/integration/submit/" + PORTAL_ID + "/" + HS_FORM_ID, {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(payload),
        keepalive: true
      }).catch(function () {});
      navigator.sendBeacon(ENRICH_URL, new Blob([JSON.stringify({ email: email })], { type: 'application/json' }));

      var sep = redirect.indexOf('?') === -1 ? '?' : '&';
      window.location.replace(redirect + sep + "email=" + encodeURIComponent(email));
    });
  }

  function init() {
    document.querySelectorAll('form.hs-email-form').forEach(wire);
  }
  if (document.readyState !== 'loading') init();
  else document.addEventListener('DOMContentLoaded', init);
})();
</script>




<form class="hs-email-form hs-email-form--plain">
  <div class="form-fields-container">
    <div class="form-row-wrapper">
      <input type="email" name="email" required="" placeholder="Your Work Email" class="form-input-email" />
      <button type="submit" class="form-submit-button" style="outline: none !important;">
        Get a personalized demo
        <span class="spinner is-hidden"></span>
      </button>
    </div>
    <p class="form-error"></p>
  </div>
</form>


</aside>

<h2 id="triage-renewals-before-you-finish-the-inventory">Triage renewals before you finish the inventory</h2>

<p>Do not wait for a complete estate map. A renewal inside the next 90 days is money leaving the building while you build a spreadsheet.</p>

<p>As soon as the finance and contract pulls are underway, build a single triage list sorted by next renewal date, with known or estimated annual value in the second column. Work only the next 90 days. For each line, do three things:</p>

<p><strong>Confirm the owner.</strong> Not the person who signed it two years ago — the person who will defend the spend this quarter. Unowned renewals auto-renew by default, every time.</p>

<p><strong>Find the notice deadline, not the renewal date.</strong> Most enterprise agreements auto-renew unless you give 30, 60, or 90 days’ written notice. The notice date is your real deadline, and for anything renewing in the next 60 days it may already have passed. Check this first; it changes what’s negotiable.</p>

<p><strong>Make the call: renew, renegotiate, or kill.</strong> You’ve lost your utilization data, so you can’t argue seat reduction from a Productiv report anymore. You can still argue from purchased-seat counts versus IdP-assigned users, from headcount changes since the last renewal, and from department owners telling you plainly whether their team uses the thing. That’s weaker evidence than you had two weeks ago, and it’s enough to hold a renegotiation.</p>

<p>Two practical notes. Ask each vendor for their own usage numbers — most account teams will share seat activity on request, and for your largest apps that partially backfills what you lost. And if a renewal is genuinely un-triageable in time, a short-term extension at the current rate is almost always available and beats renewing blind for another year.</p>

<p>This list is also the artifact Finance actually wants. Send it to them at the end of week one, unfinished, with the coverage gaps labeled.</p>

<h2 id="rebuilding-an-engagement-baseline">Rebuilding an engagement baseline</h2>

<p>Your usage history is gone, which means the new clock starts today. Every day you delay instrumentation is a day missing from the dataset you’ll need at the next renewal cycle.</p>

<p>Set this up in week one, not week four. Confirm your IdP is retaining sign-in logs long enough to be useful and export them somewhere durable — default retention in most tenants is far shorter than a renewal cycle, and you will not get those days back. Connect directly to your ten largest apps by spend via API for last-active dates, license tiers, and seat assignments; those ten usually carry most of the negotiating leverage. Turn on SCIM where you can, so provisioning and deprovisioning generate a record instead of a ticket. Keep the endpoint and OAuth telemetry flowing rather than treating it as a one-time pull.</p>

<p>Do that and you’ll have 90 days of real utilization data by mid-November, and a full renewal cycle’s worth by next summer.</p>

<p>This is also the argument against solving the problem with a spreadsheet. A hand-built inventory is accurate on the day you finish it and starts decaying immediately — new tools appear, seats change, someone renews without telling you. Worse, a static inventory can’t produce a utilization trend at all, because trends require continuous collection. The rebuild is a one-time project. The baseline is only worth having if something keeps collecting after the project ends.</p>

<h2 id="doing-this-in-torii">Doing this in Torii</h2>

<p>Everything above can be done by hand. If you would rather not, here is what the same rebuild looks like in Torii, kept short because the method is the same.</p>

<p><strong>Two connections start it.</strong> Connect your identity provider and your finance system. Discovery runs immediately against both, and the contract and endpoint sources layer in as you connect them. You are building workflows the same day instead of maintaining the spreadsheet you built last week.</p>

<p><strong>Renewals come back first.</strong> Torii rebuilds the renewal calendar before the inventory is complete: current owner, the notice deadline rather than just the renewal date, and a renew, renegotiate, or short-extension decision for each line. That is the 90-day triage list from the section above, generated rather than typed.</p>

<p><strong>What comes back.</strong> App inventory from the identity provider, software spend from AP and cards, contracts and renewal dates, app owners and sponsors, purchased license counts, and shadow SaaS and AI tools from browser and endpoint signals. What does not come back is the same for everyone: Productiv’s historical utilization trends, in-platform notes, saved views, and workflow configuration were destroyed, and no vendor can restore them.</p>

<p><strong>Who does the work.</strong> You make the two connections. A Torii specialist validates discovery and builds your workflows alongside you. There are no agents to deploy, no services engagement, and no implementation fee.</p>

<p><strong>If we ever part ways.</strong> You can export your inventory, spend, contract, owner, and license data by API or CSV at any time, on your own schedule. That is the data egress test from the next section, and you should run it while you are a happy customer.</p>

<p>Torii was named a Leader in the <a href="/reports/gartner-magic-quadrant-for-saas-management-platforms">2026 Gartner® Magic Quadrant™ for SaaS Management Platforms</a>. The <a href="/alternatives/productiv">Productiv replacement page</a> maps each Productiv capability to what Torii does.</p>

<h2 id="what-this-changed-about-vendor-selection">What this changed about vendor selection</h2>

<p>The obvious lesson is “pick a bigger vendor,” and it’s the wrong one. Company size is a weak predictor, and anyone using this moment to sell you their headcount is selling you a feeling.</p>

<p>The real lesson is narrower and more useful: ask about data egress before you sign, and test it while you’re a happy customer. Three questions belong in every SaaS evaluation from now on:</p>

<ul>
  <li>Is there a documented, self-serve export of all my objects — inventory, spend, contracts, usage history — not a CSV of the current view?</li>
  <li>Is continued data availability for some defined window after termination a contractual commitment, or a support-ticket favor?</li>
  <li>Can I pull all of it via API on a schedule I control?</li>
</ul>

<p>Then actually run that export quarterly and put the file somewhere you own. That habit, not vendor selection, is what would have made last week survivable.</p>

<p>We’ll publish the full vendor continuity questionnaire as a follow-up. In the meantime, the thing worth internalizing is that any promise of permanence — including ours — is worth exactly as much as your ability to walk away with your data.</p>

<div class="article-highlight stack">
  <div class="article-highlight-content">
    <strong>Get the working version</strong>
    <p>The <a href="/assets/files/30-Day-SaaS-Estate-Rebuild-Checklist.pdf">30-Day SaaS Estate Rebuild Checklist</a> turns the four-source framework above into a doc you can assign, with the specific exports to request from each system and a renewal triage template. It's built to be useful whatever you replace Productiv with.</p>
  </div>
</div>

<p>Still comparing platforms? Our <a href="/articles/top-5-productiv-alternatives-for-saas-management">Productiv alternatives roundup</a> covers the field, and the <a href="/alternatives/productiv">Productiv replacement page</a> maps each capability to Torii.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><summary type="html"><![CDATA[Productiv permanently deleted all customer data. Here's what's actually gone, what you can rebuild, and a four-source plan to reconstruct your SaaS estate in 30 days.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/productiv-data-delete.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/productiv-data-delete.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Why SMP Adoption is Slow</title><link href="https://www.toriihq.com/blog/competing-with-a-spreadsheet-not-a-vendor" rel="alternate" type="text/html" title="Why SMP Adoption is Slow" /><published>2026-08-07T00:00:00+00:00</published><updated>2026-08-07T00:00:00+00:00</updated><id>https://www.toriihq.com/blog/competing-with-a-spreadsheet-not-a-vendor</id><content type="html" xml:base="https://www.toriihq.com/blog/competing-with-a-spreadsheet-not-a-vendor"><![CDATA[<h2 id="i-noticed-a-recent-trend">I noticed a recent trend</h2>

<p>Most of the new customers we onboard are coming off a spreadsheet.</p>

<p>To be fair, this isn’t new, it’s the normal. But it still struck me as important.</p>

<p>This came up on a recent call at Torii: a batch of new customers had just signed, and someone noticed that most of them were coming from a SaaS management process that relied <i>entirely</i> on one person updating a spreadsheet.</p>

<h2 id="is-this-a-critical-mass-moment">Is this a critical mass moment?</h2>

<p>We’ve seen some recent consolidation in the SMP market with vendors like <a href="https://www.toriihq.com/blog/why-did-productiv-shut-down">Productiv shutting down</a>. And yet, the SMP landscape is only growing.</p>

<p>In 2025, <a href="https://www.usu.com/en/news/usu-recognized-in-the-2025-gartner-magic-quadrant-for-saas-management-platforms">Gartner claimed</a> that “Through 2028, over 70% of organizations will centralize SaaS application management using a SaaS management platform (SMP), an increase from less than 30% in 2025.”</p>

<p>Adoption of SMPs is growing, and in 2026, it’s actually accelerating as more and more companies struggle to manage AI alongside SaaS.</p>

<h2 id="so-why-has-it-taken-so-long">So why has it taken so long?</h2>

<p>Nobody owns the problem.</p>

<p>If most teams have not bought a tool for this, the question worth asking is why not. It is not that the tools are bad or that nobody cares. It is that the SaaS stack belongs to no single person.</p>

<p>Think about who touches it. IT, finance, security, procurement, and department heads each hold a piece of it. multiple owners, multiple priorities, and no one whose job title says “the software estate is mine.” A problem nobody clearly owns is a purchase nobody is clearly assigned to make.</p>

<p>Everything else about the slow adoption hangs off that. The spreadsheet is free, it is already open, and it mostly works right up until the renewal nobody caught. That renewal will not send a calendar invite, and the sheet is not going to volunteer that a seat quietly renewed for another year. When our offboarding conversations turn to the manual state, the way people put it is plain: “the list is only as good as the last time someone updated it”. That is not a complaint about a tool. It is the honest ceiling of a shared sheet that four teams half-maintain.</p>

<p>“SaaS management” is also young enough that most teams do not yet expect it as a budget line or a slot on the org chart.</p>

<h2 id="so-no-youre-not-late-to-saas-management-yet">So no, you’re not late to SaaS management… yet</h2>

<p>If you’re still updating that spreadsheet by hand; bless you.</p>

<p>You’re keeping things on track, trying to monitor adoption, track spend, inventory the un-inventoriable, and anticipate the new surprise renewal. It’s not just hard work, it’s impossible in the modern workplace.</p>

<p>We say it all the time, but SaaS Management requires cross team collaboration. Not a single hero, but a structured effort that comes from the top. Now, in a world of shadow IT and rampant AI adoption, that effort of managing your software is more important than ever. When the effort turns into a search for a platform, our <a href="/blog/buyers-guide-for-saas-management-platforms">SaaS management platform buyer’s guide</a> lays out how to run it.</p>]]></content><author><name>{&quot;display_name&quot;=&gt;&quot;John Baker&quot;, &quot;github&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;image&quot;=&gt;&quot;/assets/images/team/john-baker.jpg&quot;}</name></author><summary type="html"><![CDATA[Fewer than 30% of organizations ran a SaaS management platform in 2025. But that is starting to change...]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.toriihq.com/assets/images/articles/slow-smp-adoption.webp" /><media:content medium="image" url="https://www.toriihq.com/assets/images/articles/slow-smp-adoption.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>