
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Tue, 14 Apr 2026 20:26:41 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Securing non-human identities: automated revocation, OAuth, and scoped permissions]]></title>
            <link>https://blog.cloudflare.com/improved-developer-security/</link>
            <pubDate>Tue, 14 Apr 2026 13:00:10 GMT</pubDate>
            <description><![CDATA[ Cloudflare is introducing scannable API tokens, enhanced OAuth visibility, and GA for resource-scoped permissions. These tools help developers implement a true least-privilege architecture while protecting against credential leakage.
 ]]></description>
            <content:encoded><![CDATA[ <p>Agents let you build software faster than ever, but securing your environment and the code you write — from both mistakes and malice — takes real effort. <a href="https://www.cloudflare.com/learning/security/threats/owasp-top-10/"><u>Open Web Application Security Project</u></a> (OWASP) details a number of <a href="https://genai.owasp.org/resource/agentic-ai-threats-and-mitigations/"><u>risks</u></a> present in agentic AI systems, including the risk of credential leaks, user impersonation, and elevation of privilege. These risks can result in extreme damage to your environments including denial of service, data loss, or data leaks — which can do untold financial and reputational damage.  </p><p>This is an identity problem. In modern development, "identities" aren't just people — they are the agents, scripts, and third-party tools that act on your behalf. To secure these non-human identities, you need to manage their entire lifecycle: ensuring their credentials (tokens) aren't leaked, seeing which applications have access via OAuth, and narrowing their permissions using granular RBAC.</p><p>Today, we are introducing updates to address these needs: scannable tokens to protect your credentials,<b> </b>OAuth visibility to manage your principals, and resource-scoped RBAC to fine-tune your policies.</p>
    <div>
      <h2>Understanding identity: Principals, Credentials, and Policies</h2>
      <a href="#understanding-identity-principals-credentials-and-policies">
        
      </a>
    </div>
    <p>To secure the Internet in an era of <a href="https://www.cloudflare.com/learning/ai/what-is-agentic-ai/"><u>autonomous agents</u></a>, we have to rethink how we handle identity. Whether a request comes from a human developer or an AI agent, every interaction with an API relies on three core pillars:</p><ul><li><p><b>The Principal (The Traveler):</b> This is the identity itself — the "who." It might be you logging in via OAuth, or a background agent using an API token to deploy code.</p></li><li><p><b>The Credential (The Passport):</b> This is the proof of that identity. In this world, your API token is your passport. If it’s stolen or leaked, anyone can "wear" your identity.</p></li><li><p><b>The Policy (The Visa):</b> This defines what that identity is allowed to do. Just because you have a valid passport doesn't mean you have a visa to enter every country. A policy ensures that even a verified identity can only access the specific resources it needs.</p></li></ul><p>When these three pillars aren't managed together, security breaks down. You might have a valid Principal using a stolen Credential, or a legitimate identity with a Policy that is far too broad. </p>
    <div>
      <h2>Leaked token detection</h2>
      <a href="#leaked-token-detection">
        
      </a>
    </div>
    <p>Agents and other third-party applications use API tokens to access the Cloudflare API. One of the simplest ways that we see people leaking their secrets is by accidentally pushing them to a public GitHub repository. <a href="https://www.gitguardian.com/files/the-state-of-secrets-sprawl-report-2026"><u>GitGuardian</u></a> reports that last year more than 28 million secrets were published to public GitHub repositories, and that AI is causing leaks to happen 5x faster than before.</p><p>If an API token is a digital passport, then leaking it on a public repository is like leaving your passport on a park bench. Anyone who finds it can impersonate that identity until the document is canceled. Our partnership with GitHub acts like a global "lost and found" for these credentials. By the time you realize your passport is missing, we’ve already identified the document, verified its authenticity via the checksum, and voided it to prevent misuse.</p><p>We’re partnering with several leading credential scanning tools to help proactively find your leaked tokens and revoke them before they could be used maliciously. We know it’s not a matter of if, but rather when, before you, an employee, or one of your agents makes a mistake and pushes a secret somewhere it shouldn’t be. </p>
    <div>
      <h4>GitHub</h4>
      <a href="#github">
        
      </a>
    </div>
    <p>We’ve partnered with GitHub and are participating in their Secret Scanning program to find your tokens in both public and private repositories. If we are notified that a token has leaked to a public repository, we will automatically revoke the token to prevent it from being used maliciously. For private repositories, GitHub will notify you about any leaked Cloudflare tokens and you can clean these up.</p>
    <div>
      <h5>How it works</h5>
      <a href="#how-it-works">
        
      </a>
    </div>
    <p>We’ve shared the new token formats (below!) with GitHub, and they now scan for them on every commit. If they find something that looks like a leaked Cloudflare token, they verify the token is real (using the checksum), send us a webhook to revoke it, and then we notify you via email so you can generate a new one in Dashboard settings.</p><p>This means we plug the hole as soon as it’s found. By the time you realize you made a mistake, we've already fixed it. </p><p>We hope this is the kind of feature you don’t need to use, but our partners are on the lookout for leaks to help keep you secure. </p>
    <div>
      <h4>Cloudflare One</h4>
      <a href="#cloudflare-one">
        
      </a>
    </div>
    <p>Cloudflare One customers are also protected from these leaks. By configuring the <a href="https://developers.cloudflare.com/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/#credentials-and-secrets"><u>Credentials and Secrets</u></a> DLP profile, organizations can activate prevention everywhere a credential can travel:</p><ul><li><p><b>Network Traffic (</b><a href="https://www.cloudflare.com/sase/products/gateway/"><b><u>Cloudflare Gateway</u></b></a><b>):</b> Apply these entries to a policy to detect and block Cloudflare API tokens moving across your network. A token in a file upload, an outbound request, or a download is stopped before it reaches its destination.</p></li><li><p><b>Outbound Email (</b><a href="https://www.cloudflare.com/sase/products/email-security/"><b><u>Cloudflare Email Security</u></b></a><b>):</b> Microsoft 365 customers can extend this same prevention to Outlook. The <a href="https://developers.cloudflare.com/cloudflare-one/email-security/outbound-dlp/"><u>DLP Assist</u></a> add-in scans messages before delivery, catching a token before it’s sent externally.</p></li><li><p><b>Data at Rest (</b><a href="https://www.cloudflare.com/sase/products/casb/"><b><u>Cloudflare CASB</u></b></a><b>):</b> Cloudflare’s Cloud Access Security Broker applies the same profile to scan files across connected SaaS applications, catching tokens saved or shared in Google Drive, OneDrive, Dropbox, and other integrated services.</p></li></ul><p>The most novel exposure vector, though, is AI traffic. <a href="https://www.cloudflare.com/developer-platform/products/ai-gateway/"><u>Cloudflare AI Gateway</u></a> integrates with the same DLP profiles to scan and block both incoming prompts and outgoing AI model responses in real time.</p>
    <div>
      <h4>Other credential scanners</h4>
      <a href="#other-credential-scanners">
        
      </a>
    </div>
    <p>The only way credential scanning works is if we meet you where you are, so we are working with several open source and commercial credential scanners to ensure you are protected no matter what secret scanner you use. </p>
    <div>
      <h3>How it works</h3>
      <a href="#how-it-works">
        
      </a>
    </div>
    <p>Until now, Cloudflare’s API tokens were pretty generic looking, so they were hard for credential scanners to identify with high confidence. These automated security tools scan your code repositories looking for exposed credentials like API keys, tokens or passwords. The “cf” prefix makes Cloudflare tokens instantly recognizable with greater confidence, and the checksum makes it easy for tools to statically validate them. Your existing tokens will continue to work, but every new token you generate will use the scannable format so it’s easily detected with high confidence.</p><table><tr><td><p><b>Credential Type</b></p></td><td><p><b>What it's for</b></p></td><td><p><b>New Format</b></p></td></tr><tr><td><p>User API Key</p></td><td><p>Legacy global API key tied to your user account (full access)</p></td><td><p><b>cfk_[40 characters][checksum]</b></p></td></tr><tr><td><p>User API Token</p></td><td><p>Scoped token you create for specific permissions</p></td><td><p><b>cfut_[40 characters][checksum]</b></p></td></tr><tr><td><p>Account API Token</p></td><td><p>Token owned by the account (not a specific user)</p></td><td><p><b>cfat_[40 characters][checksum]</b></p></td></tr></table>
    <div>
      <h4>Getting started</h4>
      <a href="#getting-started">
        
      </a>
    </div>
    <p>If you have existing API tokens, you can roll the token to create a new, scannable API token. This is optional, but recommended to ensure that your tokens are easily discoverable in case they leak. </p><p>While API tokens are generally used by your own scripts and agents, OAuth is how you manage access for third-party platforms. Both require clear visibility to prevent unauthorized access and ensure you know exactly who — or what — has access to your data.</p>
    <div>
      <h2>Improving the OAuth consent experience</h2>
      <a href="#improving-the-oauth-consent-experience">
        
      </a>
    </div>
    <p>When you connect third-party applications like Wrangler to your Cloudflare Account using OAuth, you're granting that application access to your account’s data. Over time, you may forget why you granted a third party application access to your Account in the first place. Previously, there was no central place to view &amp; manage those applications. Starting today, there is.  </p><p>Going forward, when a third party application requests access to your Cloudflare account, you’ll be able to review: </p><ul><li><p><b>Which third-party application</b> is requesting access, along with information about the application like Name, Logo, and the Publisher.</p></li><li><p><b>Which scopes</b> the third-party application is requesting access to.</p></li><li><p><b>Which accounts</b> to grant the third party application access to.</p></li></ul>
<div><table><thead>
  <tr>
    <th><span>Before</span></th>
    <th><span>After</span></th>
  </tr></thead>
<tbody>
  <tr>
    <td><img src="https://images.ctfassets.net/zkvhlag99gkb/2p3RZFDklLn9cfQOVYq5vS/d40e6116c115c453095f8ed2d110f062/image3.png" /></td>
    <td><img src="https://images.ctfassets.net/zkvhlag99gkb/33yGBWfD468P6T0hAnvbPX/9241ef24b6381eedaf2830b782a69f2e/image4.png" /><br /><br />
    
    <img src="https://images.ctfassets.net/zkvhlag99gkb/22pDfCAFbPLNhnAPXLB36w/0671d7e892c5a93040ab17a62eda4a3c/image1.png" /></td>
  </tr>
</tbody></table></div><p>Not all applications require the same permissions; some only need to read data, others may need to make changes to your Account. Understanding these scopes before you grant access helps you maintain least-privilege. </p><p>We also added a <a href="https://dash.cloudflare.com/profile/access-management/authorization"><u>Connected Applications</u></a> experience so you can see which applications have access to which accounts, what scopes/permissions are associated with that application, and easily revoke that access as needed. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5Aiu82urkjaL9SWpZUBgNi/827cf38aa655d4094de1895d07f51137/BLOG-3216_5.png" />
          </figure>
    <div>
      <h4>Getting started</h4>
      <a href="#getting-started">
        
      </a>
    </div>
    <p>The OAuth consent and revocation improvements are available now. Check which apps currently have access to your accounts by visiting My Profile &gt; Access Management &gt; Connected Applications. </p><p>For developers building integrations with Cloudflare, keep an eye on the <a href="https://developers.cloudflare.com/changelog"><u>Cloudflare Changelog</u></a> for more announcements around how you can register your own OAuth apps soon! </p>
    <div>
      <h2>Fine-grained resource-level permissioning </h2>
      <a href="#fine-grained-resource-level-permissioning">
        
      </a>
    </div>
    <p>If the token is the passport, then resource-scoped permissions are the visas inside it. Having a valid passport gets you through the front door, but it shouldn't give you access to every room in the building. By narrowing the scope to specific resources — like a single Load Balancer pool or a specific Gateway policy — you are ensuring that even if an identity is verified, it only has the "visa" to go where it’s strictly necessary.</p><p>Last year, we <a href="https://developers.cloudflare.com/changelog/post/2025-10-01-fine-grained-permissioning-beta/"><u>announced</u></a> support for resource scoped permissions in Cloudflare’s <a href="https://www.cloudflare.com/learning/access-management/role-based-access-control-rbac/"><u>role-based access control (RBAC)</u></a> system for several of our Zero Trust products. This enables you to right size permissions for both users and agents to minimize security risks. We’ve expanded this capability to several new resources-level permissions. The resource scope is now supported for:</p><ul><li><p>Access Applications</p></li><li><p>Access Identity Providers</p></li><li><p>Access Policies</p></li><li><p>Access Service Tokens</p></li><li><p>Access Targets</p></li></ul><p>We’ve also completely overhauled the API Token creation experience, making it easier for customers to provision and manage Account API Tokens right from the Cloudflare Dashboard. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2XSjOtE46g8iVNN7QNzoDI/2f2280b106da9ebc9f3959d5300a4241/account_owned_token_gif.gif" />
          </figure>
    <div>
      <h4>How it works</h4>
      <a href="#how-it-works">
        
      </a>
    </div>
    <p>When you add a member to your Cloudflare account or create an API Token, you typically assign that principal a policy. A Permission Policy is what gives a principal permission to take an action, whether that’s managing Cloudflare One Access Applications, or DNS Records. Without a policy, a principal can authenticate, but they are unauthorized to do any actions within an account.</p><p>Policies are made up of three components: a Principal, a Role, and a Scope. The Principal is who or what you're granting access to, whether that's a human user, a Non-Human Identity (NHI) like an API Token, or increasingly, an Agent acting on behalf of a user. The Role defines what actions they're permitted to take. The Scope determines where those permissions apply, and historically, that's been restricted to the entire account, or individual zones.</p>
    <div>
      <h2>New permission roles</h2>
      <a href="#new-permission-roles">
        
      </a>
    </div>
    <p>We’re also expanding the role surface more broadly at both the Account &amp; Zone level with the introduction of a number of new roles for many products.   </p><ul><li><p>Account scope</p><ul><li><p>CDN Management</p></li><li><p>MCP Portals</p></li><li><p>Radar</p></li><li><p>Request Tracer</p></li><li><p>SSL/TLS Management</p></li></ul></li><li><p>Zone scope</p><ul><li><p>Analytics</p></li><li><p>Logpush</p></li><li><p>Page Rules</p></li><li><p>Security Center</p></li><li><p>Snippets</p></li><li><p>Zone Settings</p></li></ul></li></ul>
    <div>
      <h4>Getting started</h4>
      <a href="#getting-started">
        
      </a>
    </div>
    <p>The resource scope and all new account and zone-level roles are available today for all Cloudflare customers. You can assign account, zone, or resource-scoped policies through the Cloudflare Dashboard, the API, or Terraform. </p><p>For a full breakdown of all available roles and how scopes work, visit our <a href="https://developers.cloudflare.com/fundamentals/manage-members/roles/"><u>roles</u></a> and <a href="https://developers.cloudflare.com/fundamentals/manage-members/scope/"><u>scope documentation</u></a>.</p>
    <div>
      <h2>Secure your accounts</h2>
      <a href="#secure-your-accounts">
        
      </a>
    </div>
    <p>These updates provide the granular building blocks needed for a true least-privilege architecture. By refining how we manage permissions and credentials, developers and enterprises can have greater confidence in their security posture across the users, apps, agents, and scripts that access Cloudflare. Least privilege isn’t a new concept, and for enterprises, it’s never been optional. Whether a human administrator is managing a zone or an agent is programmatically deploying a Worker, the expectation is the same, they should only be authorized to do the job it was given, and nothing else. </p><p>Following today’s announcement, we recommend customers:</p><ol><li><p>Review your <a href="https://dash.cloudflare.com/profile/api-tokens"><u>API tokens</u></a>, and reissue with the new, scannable API tokens as soon as possible. </p></li><li><p><a href="https://dash.cloudflare.com/profile/access-management/authorization"><u>Review your authorized OAuth apps</u></a>, and revoke any that you are no longer using</p></li><li><p>Review <a href="https://dash.cloudflare.com/?to=/:account/billing"><u>member</u></a> &amp; <a href="https://dash.cloudflare.com/profile/api-tokens"><u>API Token</u></a> permissions in your accounts and ensure that users are taking advantage of the new account, zone, or resource scoped permissions as needed to reduce your risk area. </p></li></ol><p></p> ]]></content:encoded>
            <category><![CDATA[Agents Week]]></category>
            <category><![CDATA[Agents]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <guid isPermaLink="false">4cMjGGRR98LV3HgGdwgWrf</guid>
            <dc:creator>Justin Hutchings</dc:creator>
            <dc:creator>Adam Bouhmad</dc:creator>
            <dc:creator>Rebecca Varley</dc:creator>
        </item>
    </channel>
</rss>