<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dwayne McDaniel</title>
    <description>The latest articles on DEV Community by Dwayne McDaniel (@dwayne_mcdaniel).</description>
    <link>https://dev.to/dwayne_mcdaniel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F865016%2Fa8b060e5-eccd-496d-909b-6d9c0a5b0202.jpg</url>
      <title>DEV Community: Dwayne McDaniel</title>
      <link>https://dev.to/dwayne_mcdaniel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dwayne_mcdaniel"/>
    <language>en</language>
    <item>
      <title>AI Agents Security for Developers: Don't Let Your Agents Become a Liability</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Thu, 21 May 2026 12:18:53 +0000</pubDate>
      <link>https://dev.to/gitguardian/ai-agents-security-for-developers-dont-let-your-agents-become-a-liability-14mj</link>
      <guid>https://dev.to/gitguardian/ai-agents-security-for-developers-dont-let-your-agents-become-a-liability-14mj</guid>
      <description>&lt;p&gt;👉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; The most common agentic AI security mistakes are ordinary security hygiene failures, now executed autonomously and at machine speed:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API tokens stored locally, unscoped
&lt;/li&gt;
&lt;li&gt;No approval gates before irreversible commands
&lt;/li&gt;
&lt;li&gt;Production credentials in development environments
&lt;/li&gt;
&lt;li&gt;MCP server configs with connection secrets committed to repos
&lt;/li&gt;
&lt;li&gt;Overprivileged tokens that were "just for testing" and never got cleaned up
Good old security hygiene is now the safety net between your coding agent and your production database.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Your AI Agent Is Probably a Security Risk Right Now&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;On a Friday in April 2026, Cursor running Anthropic's Claude Opus 4.6 deleted the production database and all volume-level backups of an automotive SaaS platform (PocketOS). It took nine seconds.&lt;/p&gt;

&lt;p&gt;The incident is worth reading closely because the failure conditions are common. The agent encountered a credential mismatch in a staging environment and decided to fix it. It found an API token in an unrelated file, one created for managing custom domains through the Railway CLI but broad enough to perform destructive operations. The agent used it to issue a single API call to Railway, deleting the production volume without a confirmation prompt. Railway stored volume-level backups in the same volume, so those went too.&lt;/p&gt;

&lt;p&gt;When the model was asked why it did so, here's what it said:&lt;/p&gt;

&lt;p&gt;"I guessed that deleting a staging volume via the API would be scoped to staging only. I didn't verify. I didn't check if the volume ID was shared across environments. I didn't read Railway's documentation on how volumes work before running a destructive command. On top of that, the system rules I operate under explicitly state: 'NEVER run destructive/irreversible git commands unless the user explicitly requests them.' Deleting a database volume is the most destructive, irreversible action possible -- and you never asked me to delete anything."&lt;/p&gt;

&lt;p&gt;The agent did not create the problem. The exposure already existed in the form of an overprivileged API key.&lt;/p&gt;

&lt;p&gt;The mental model many developers are still missing is simple: when you use a coding agent, it operates as you, in your environment, with your credentials. It can read project files, inspect environment variables, and run commands with whatever permissions your tokens carry. If you have a root-scoped token sitting in a config file from six months ago, your agent might find it. Unlike a human developer who would probably recognize it as unrelated, a coding agent under pressure to fix a problem may simply use it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.gitguardian.com/before-you-deploy-that-llm-nhi/" rel="noopener noreferrer"&gt;Secrets sprawl before deploying LLMs&lt;/a&gt; has been a documented risk since AI integrations first showed up in production environments. The difference is the actor. &lt;strong&gt;Your credentials are no longer accessed only by you, at human speed, with human judgment.&lt;/strong&gt; They are now accessible to a coding agent that can act at machine speed and does not always stop to ask.&lt;/p&gt;

&lt;p&gt;The old assumptions no longer hold. Your development credentials are available to whatever agent you let operate in that workspace. A test token is harmless only until the agent finds a use for it. A cleanup task can wait for a human, but it will not wait for software that can act before you notice the risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Start With What Your Agent Can Reach&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Start with the question that matters before the agent runs: &lt;strong&gt;what credentials are reachable from this workspace?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before opening a project in an agentic coding tool, audit the credential surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.env files&lt;/li&gt;
&lt;li&gt;shell profiles&lt;/li&gt;
&lt;li&gt;local config files&lt;/li&gt;
&lt;li&gt;MCP server configs&lt;/li&gt;
&lt;li&gt;cloud CLI credentials&lt;/li&gt;
&lt;li&gt;package manager tokens&lt;/li&gt;
&lt;li&gt;old notes, scripts, and Makefiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the agent can read it, assume the agent can use it. The agent's workspace should contain only credentials that are safe for the task at hand.&lt;/p&gt;

&lt;p&gt;In practice, development credentials should be separate from production credentials, scoped to the narrowest useful action, and rotated when the work ends. If a token can delete a production database, it does not belong in a routine development environment where a coding agent is operating.&lt;/p&gt;

&lt;p&gt;Secret scanning belongs directly in that workflow. Pre-commit hooks are especially useful for coding-agent users because they catch credentials in generated code before the agent or developer commits them. PR scanning and CI/CD scanning provide additional layers, but pre-commit is where you stop the mistake closest to the source.&lt;/p&gt;

&lt;p&gt;GitGuardian can cover each of these surfaces, including local pre-commit scanning, repository monitoring, CI/CD exposure, MCP configuration files, and credentials surfaced in agent-generated code. Scanning is not a replacement for least privilege. It catches the moment when the agent writes, copies, or exposes something it should not.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use Better Credential Patterns When the Agent Writes Code&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are two credential problems to watch: what the agent can already reach, and what it writes into your application.&lt;/p&gt;

&lt;p&gt;When a coding agent generates integration code, review the authentication pattern it chooses. Agents optimize for getting the task done. They may reach for a static API key because it is easy, familiar, and present in nearby examples. That does not make it the right pattern.&lt;/p&gt;

&lt;p&gt;Prefer this order:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Workload identity or managed identity.&lt;/strong&gt; For cloud-native applications, use the platform's native identity system wherever possible. AWS IAM roles, GCP Workload Identity Federation, and Azure Managed Identity all avoid storing long-lived static credentials in code or config.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. OAuth with short-lived, scoped tokens.&lt;/strong&gt; For SaaS integrations, request only the scopes the application needs and use dedicated app registrations per integration. OAuth assumes client behavior can be anticipated, but agent-written systems often compose behavior dynamically. Narrow scopes are your blast radius limiter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Vault-issued dynamic credentials.&lt;/strong&gt; For databases, internal services, and infrastructure, use a secrets manager that issues scoped, time-limited credentials at runtime. HashiCorp Vault, AWS Secrets Manager, and Azure Key Vault all support patterns that avoid hardcoding credentials into the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. API keys with strict controls.&lt;/strong&gt; Some APIs still only support API keys. In that case, use one key per service integration, store it in a vault or inject it at runtime, set the shortest reasonable lifetime, and monitor for exposure. For vault storage, rotation scheduling, and scoping patterns, &lt;a href="https://blog.gitguardian.com/secrets-api-management/" rel="noopener noreferrer"&gt;API key management best practices&lt;/a&gt; is the reference to start with.&lt;/p&gt;

&lt;p&gt;Hardcoded secrets are the pattern to reject: credentials embedded in source code, committed .env files, prompt templates, config files, or examples that the agent can imitate. If an agent generates code with hardcoded credentials, fix the immediate output and then check whether it learned that pattern from the existing codebase.&lt;/p&gt;

&lt;p&gt;Also look at secret handling in logs and caches. Agents sometimes write debug statements that print retrieved secrets or cache credentials beyond their intended lifetime. The authentication pattern may be sound while the generated implementation still leaks the credential.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Securing MCP Server Connections: The New Attack Surface&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Coding agents like Claude Code and Cursor increasingly use MCP (Model Context Protocol) to connect to external tools: databases, APIs, file systems, and services. Configuring MCP servers means making credential decisions that affect every tool call your agent makes.&lt;/p&gt;

&lt;p&gt;The common mistakes are familiar: secrets stored directly in JSON or YAML config files, admin-level database access when read-only access would be enough, and shared MCP configurations reused across projects or team members. In each case, the MCP server turns a local coding assistant into an authenticated actor against an external system.&lt;/p&gt;

&lt;p&gt;Store MCP connection credentials in a secrets manager, not in configuration files. This is the same principle behind &lt;a href="https://blog.gitguardian.com/building-a-secure-llm-gateway/" rel="noopener noreferrer"&gt;building a secure LLM gateway with MCP&lt;/a&gt;: the agent should reference credentials through a controlled layer, not hold them directly. Inject values as environment variables at runtime. Scope each MCP server to the minimum required access. If the agent only needs to read from a database, configure read-only access.&lt;/p&gt;

&lt;p&gt;MCP configs deserve the same treatment as application secrets. Exclude sensitive local configs from version control, scan repositories that contain MCP setup files, and review generated MCP configuration before accepting it. Coding agents can write these files for you, and they do not always follow the safer pattern by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Developer Checklist&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The practical controls are not complicated. The hard part is applying them before the agent starts acting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before running a coding agent in a project&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audit credentials in the project directory and development environment&lt;/li&gt;
&lt;li&gt;Remove production credentials from routine development work&lt;/li&gt;
&lt;li&gt;Scope API tokens to the minimum required operations&lt;/li&gt;
&lt;li&gt;Separate development, staging, and production credentials&lt;/li&gt;
&lt;li&gt;Install pre-commit secret scanning hooks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;While the agent is working&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review generated code for hardcoded credentials&lt;/li&gt;
&lt;li&gt;Require explicit confirmation before destructive operations&lt;/li&gt;
&lt;li&gt;Do not paste raw credentials into prompt context&lt;/li&gt;
&lt;li&gt;Watch for unexpected API calls, logs, or generated config changes&lt;/li&gt;
&lt;li&gt;Treat MCP configs as sensitive files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In CI/CD and automated workflows&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inject secrets through CI/CD secret stores&lt;/li&gt;
&lt;li&gt;Use OIDC for cloud access instead of static cloud keys where possible&lt;/li&gt;
&lt;li&gt;Scan pipeline logs and artifacts&lt;/li&gt;
&lt;li&gt;Apply the same review standards to agent-generated commits as human commits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After the work ends&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Revoke task-specific tokens&lt;/li&gt;
&lt;li&gt;Rotate credentials that may have been exposed&lt;/li&gt;
&lt;li&gt;Remove stale MCP server entries&lt;/li&gt;
&lt;li&gt;Review whether the agent's environment still contains only what it needs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Do Not Treat Prompt Rules as Security Controls&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The PocketOS incident is useful because the agent reportedly had an instruction not to run destructive commands. It ran one anyway. System prompts can still shape behavior, slow the agent down, and make safer workflows more likely. They are reminders, not authorization boundaries.&lt;/p&gt;

&lt;p&gt;Security controls should live where the action happens. If a command can delete a production database, the API should require confirmation, the token should be scoped away from production, or the tool should force human approval before the call executes. If a database connection is only needed for inspection, the credential should be read-only. If a CI/CD job only needs to deploy one service, its identity should not be able to modify unrelated infrastructure.&lt;/p&gt;

&lt;p&gt;Prompt rules are the last layer. They do not replace scoped tokens, environment separation, approval gates, immutable backups, or secret scanning. This distinction matters because developers often notice the model's behavior first and the credential design second.&lt;/p&gt;

&lt;p&gt;The safer habit is to ask: "If the agent ignores every instruction, what can it still do?"&lt;/p&gt;

&lt;p&gt;That question turns agentic AI security back into normal security engineering: limit privileges, remove stale credentials, detect exposures early, require confirmation for irreversible actions, and keep production separate from development.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What's Coming: Agent Security Challenges on the Horizon&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Coding agents in CI/CD.&lt;/strong&gt; As agents move from local dev tools to automated pipeline actors, the credential exposure surface grows. An agent in CI/CD may have access to pipeline secrets, deployment permissions, and repository write access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-provisioned credentials.&lt;/strong&gt; More capable agents may create API keys and service accounts when they need access to a new service. If an agent creates a root-scoped token to get something done faster, you need to know.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP ecosystem expansion.&lt;/strong&gt; As the MCP ecosystem grows, developers will connect coding agents to more external services, each with its own credentials. A well-connected coding agent can accumulate a serious credential surface before anyone has named it as one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt injection as credential exfiltration.&lt;/strong&gt; A malicious input that manipulates a coding agent into revealing, logging, or exfiltrating credentials is an active research area and an emerging attack chain. If your agent reads untrusted content, such as external documentation, third-party code, or user-provided files, and also has access to credentials, those two facts together create a risk. The best mitigation today is limiting what credentials the agent can reach, not relying on the agent to recognize manipulation.&lt;/p&gt;

&lt;p&gt;The next serious agent incident probably will not look exotic. It will look like a token left in the wrong place.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;FAQs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) What are the biggest AI agent security risks for developers using coding agents?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest risks are overprivileged credentials in development environments that coding agents can find and use autonomously. Hardcoded or unscoped API tokens, production credentials accessible during dev work, committed MCP configs, and no approval gates for destructive operations are the failure modes that cause incidents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) How should I authenticate my AI agent to external APIs?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When your coding agent writes code that integrates with external APIs, push it toward workload identity for cloud-native environments, OAuth with short-lived scoped tokens for SaaS integrations, or vault-issued dynamic credentials for internal services. In your dev environment, audit every credential accessible to the agent and ensure it is scoped to the minimum required operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) How do I secure MCP server connections?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Store MCP connection credentials in a secrets manager and inject them as environment variables at runtime. Do not embed them in config files. Scope each MCP server to the minimum access required. If your coding agent only needs to read from a database, configure read-only access. Scan repositories containing MCP configurations for accidentally committed secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) How do I prevent my AI agent from leaking secrets?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coding agents can surface credentials in generated code, logs, and artifacts. Use pre-commit hooks to block secrets before they enter the repository, review generated code before committing, and avoid passing raw credentials through prompt context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Should I give my coding agent access to production credentials?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Coding agents should operate in development and staging environments with credentials that are physically incapable of affecting production. If a production incident requires debugging with an agent, make that a deliberate, audited exception, not the default state of your environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6) How do I handle token rotation when I'm using coding agents?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coding agents increase the surface where credentials are accessed and potentially exposed, which makes rotation discipline more important. Automate rotation where possible, set expiration dates when creating tokens, and rotate immediately after suspected exposure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7) What should I do when an AI coding agent causes a credential-related incident?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Revoke the credential immediately at the issuing service. Assess what the credential permitted, check audit logs for activity during the exposure window, and investigate how the credential became accessible to the agent. Then fix the control failure: scoping, environment separation, approval gates, or scanning coverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8) How does secret scanning help with AI agent security?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coding agents write code, config, and scripts. Secret scanning at the pre-commit stage catches credentials in agent-generated output before they enter the repository. Repository monitoring catches historical exposure, while CI/CD scanning catches credentials in build artifacts. GitGuardian covers these surfaces from local hooks through production monitoring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/interactive-demo?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfcl8kw7m7jyjajdbra1.png" alt="GitGuardian Interactive Demo" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devsecops</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>How We Got a CISA GitHub Leak Taken Down in Under a Day</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Wed, 20 May 2026 12:28:33 +0000</pubDate>
      <link>https://dev.to/gitguardian/how-we-got-a-cisa-github-leak-taken-down-in-under-a-day-2cd7</link>
      <guid>https://dev.to/gitguardian/how-we-got-a-cisa-github-leak-taken-down-in-under-a-day-2cd7</guid>
      <description>&lt;p&gt;On May 14, 2026, GitGuardian found what looked like leaked CISA secrets in a public GitHub repository named Private-CISA. It held 844 MB of data across the working tree and Git history. The working tree was 498 MB; the rest was Git history and objects.&lt;/p&gt;

&lt;p&gt;The repository contained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD build logs and deployment workflow documentation.&lt;/li&gt;
&lt;li&gt;Kubernetes manifests, ArgoCD application files, and secret-related YAML files.&lt;/li&gt;
&lt;li&gt;Terraform infrastructure code and related bundles.&lt;/li&gt;
&lt;li&gt;GitHub Actions workflows and GitHub organization automation.&lt;/li&gt;
&lt;li&gt;Internal documentation backups, including large OneNote / .docx exports.&lt;/li&gt;
&lt;li&gt;Scripts for GitHub, Kubernetes, ArgoCD, and infrastructure operations.&lt;/li&gt;
&lt;li&gt;References to AWS accounts, IAM identities, service accounts, internal service endpoints, registry locations, and secret-management paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exposed material provided a detailed view into cloud infrastructure, deployment workflows, software supply-chain tooling, and internal operational practices.&lt;/p&gt;

&lt;p&gt;At first, we thought it was a hoax, given how suspicious the directory names (&lt;code&gt;Backup-April-2026/&lt;/code&gt;, &lt;code&gt;All Backups/&lt;/code&gt;, &lt;code&gt;LZ-Artifactory/&lt;/code&gt;, &lt;code&gt;Kubernetes-Important-Yaml-Files/&lt;/code&gt;, &lt;code&gt;ENTRA ID - SAML Certificates/&lt;/code&gt; ...), file names (&lt;code&gt;external-secret-repo-creds.yaml&lt;/code&gt;, &lt;code&gt;CAWS GitHub Token.txt&lt;/code&gt;, &lt;code&gt;Important AWS Tokens.txt&lt;/code&gt;, &lt;code&gt;AWS-Workspace-Firefox-Passwords.csv&lt;/code&gt;, &lt;code&gt;Kube-Config.txt&lt;/code&gt; ...), and their contents (private keys, personal and professional GitHub tokens, AWS secrets, ...) seemed too good to be true.&lt;/p&gt;

&lt;p&gt;Personal documents, hostnames, and the careful organization of the files changed our minds. The repository was a catalogue of unsafe practices: plain-text passwords, backups committed to Git, and explicit instructions to disable GitHub's secret scanning&lt;/p&gt;

&lt;p&gt;Our research team reported the leak through the CERT/CC portal on May 14 at 4:14 PM CET and worked personal contacts in parallel to speed disclosure.&lt;/p&gt;

&lt;p&gt;GitGuardian Public Monitoring surfaced the leak first. By May 13, our &lt;a href="https://www.gitguardian.com/good-samaritan?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Good Samaritan program&lt;/a&gt; had already sent nine emails to the commit author.&lt;/p&gt;

&lt;p&gt;By the morning of May 15 we still had only the automatic acknowledgment. With the weekend approaching, we contacted &lt;a href="https://krebsonsecurity.com/2026/05/cisa-admin-leaked-aws-govcloud-keys-on-github/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Brian Krebs&lt;/a&gt; to forward the leak to his CISA contacts, and activated partners for a direct line in.&lt;/p&gt;

&lt;p&gt;Around 16:00 CET on May 15 we reached CISA directly. The repository went offline around 6:00 PM EST on May 15, 2026. Seeing the repository taken down so fast was a relief. &lt;strong&gt;Credit to CISA for moving fast — most of our disclosures take far longer, and some are never fixed.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure Timeline
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;November 13, 2025 - Creation of the public Private-CISA Github repository and first exposures&lt;/li&gt;
&lt;li&gt;May 14, 2026 - Incident detected by GitGuardian and reported to CERT/CC&lt;/li&gt;
&lt;li&gt;May 15, 2026 - Incident directly reported to CISA by GitGuardian&lt;/li&gt;
&lt;li&gt;May 15, 2026 - The Private-CISA GitHub repository is taken offline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/interactive-demo?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfcl8kw7m7jyjajdbra1.png" alt="GitGuardian Interactive Demo" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devsecops</category>
      <category>github</category>
    </item>
    <item>
      <title>The Future Of GitHub Actions Security And What You Can Do Right Now</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Tue, 19 May 2026 13:15:27 +0000</pubDate>
      <link>https://dev.to/gitguardian/the-future-of-github-actions-security-and-what-you-can-do-right-now-32nj</link>
      <guid>https://dev.to/gitguardian/the-future-of-github-actions-security-and-what-you-can-do-right-now-32nj</guid>
      <description>&lt;p&gt;&lt;a href="https://github.blog/news-insights/product-news/whats-coming-to-our-github-actions-2026-security-roadmap/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitHub's new Actions security roadmap&lt;/a&gt; is a sign that the industry has finally accepted something many defenders have been saying for years: CI/CD is no longer a convenience layer. It is production and identity infrastructure, and it's secret-bearing. When it is compromised, the attacker does not just get a build. They get a path into source code, publishing systems, cloud environments, and the trust chain behind software delivery, as we have seen with &lt;a href="https://blog.gitguardian.com/team-pcp-snowball-analysis/" rel="noopener noreferrer"&gt;several recent attacks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;GitHub is describing a structural shift in how Actions will work: deterministic workflow dependencies, centralized execution policy, tighter secret scoping, better telemetry, and native outbound network controls for hosted runners. Less ambient trust, fewer implicit permissions, more infrastructure-level control over what automation can do.&lt;/p&gt;

&lt;p&gt;Most organizations are still operating in the messy reality where their workflows are already live, with their secrets already distributed across repositories, CI systems, collaboration platforms, registries, and cloud tooling. GitHub is building toward a safer actions platform. In the meantime, teams still need visibility, detection, and remediation for the environment they have today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Changing The Trust Model
&lt;/h2&gt;

&lt;p&gt;For a long time, GitHub Actions security has relied heavily on teams getting the YAML right. Pin your actions, avoid risky triggers, be careful with &lt;code&gt;pull_request_target&lt;/code&gt;, scope your secrets tightly. All of that guidance still matters, but it has always placed a lot of burden on local workflow authors. The roadmap shows GitHub moving that burden upward into the platform itself.&lt;/p&gt;

&lt;p&gt;One of the clearest examples is &lt;strong&gt;dependency locking for workflows&lt;/strong&gt;. GitHub plans to add a &lt;code&gt;dependencies&lt;/code&gt; section so workflows can lock direct and transitive dependencies to specific commit SHAs, with verification before jobs execute. That turns Actions dependencies into something closer to a managed dependency graph than a loose set of runtime references.&lt;/p&gt;

&lt;p&gt;Recent supply chain attacks have repeatedly shown how dangerous mutable trust can be. A workflow that references an action by tag is convenient, but it's also a place where trust can drift. GitHub's roadmap effectively admits that convenience-first CI/CD needs stronger guardrails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Execution policy is becoming a first-class control
&lt;/h2&gt;

&lt;p&gt;Another major change is workflow execution protections built on GitHub rulesets. Many CI/CD incidents are not about one dramatic bug — they are about context collapse. The wrong actor triggers the wrong workflow on the wrong event, and suddenly an untrusted path gains access to trusted capabilities.&lt;/p&gt;

&lt;p&gt;GitHub's planned controls let organizations define who can trigger workflows and which events are permitted, with organization-level policy instead of per-file guesswork. That means security teams can set boundaries around things like &lt;code&gt;workflow_dispatch&lt;/code&gt;, &lt;code&gt;push&lt;/code&gt;, and &lt;code&gt;pull_request&lt;/code&gt;, and evaluate those policies before enforcement.&lt;/p&gt;

&lt;p&gt;This is the platform catching up to reality. CI/CD risk is governance risk. It is not just syntax risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Secrets are being treated as contextual assets instead of shared utilities
&lt;/h2&gt;

&lt;p&gt;The roadmap's changes around secrets may be the most important operationally. GitHub plans to introduce &lt;strong&gt;scoped secrets&lt;/strong&gt; so credentials can be bound more precisely to repositories, branches, environments, workflow identities, and trusted reusable workflows. Secret management will no longer automatically ride along with repository write access.&lt;/p&gt;

&lt;p&gt;This reflects a broader truth in modern software delivery: &lt;strong&gt;a secret is never just a string. It represents access, authority, and potential lateral movement.&lt;/strong&gt; Once it leaves its intended lane, the problem is no longer limited to CI.&lt;/p&gt;

&lt;p&gt;Better secret scoping inside Actions will help when it lands. It will not clean up the existing sprawl of tokens, API keys, service credentials, and cloud secrets already scattered across the rest of the development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The near-term gap is not theoretical
&lt;/h2&gt;

&lt;p&gt;GitHub's roadmap addresses a real pattern. Recent incidents involving tj-actions/changed-files, Nx, and trivy-action all followed the same pattern: attackers compromise the automation layer, harvest credentials, then use those credentials to expand access and impact.&lt;/p&gt;

&lt;p&gt;The real question for defenders right now: &lt;strong&gt;while these new Actions controls are being built and rolled out, how do you reduce risk in the environment you already have?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GitGuardian helps with the environment teams actually have today
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian's Secrets Security and NHI Governance&lt;/a&gt; platform is built on the fact that secret exposure is rarely confined to a single repository or control plane. &lt;a href="https://www.gitguardian.com/integrations?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;The platform scans across a broad set of internal sources where credentials may appear&lt;/a&gt; — version control systems, container registries, documentation platforms, messaging systems, package registries, and other connected systems. It is critical to think past the Git repo and consider anywhere an attacker is looking, &lt;a href="https://blog.gitguardian.com/litellm-supply-chain-attack/" rel="noopener noreferrer"&gt;including developers' local machines&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A leaked token may start in code, then show up in CI logs, then be pasted into a ticket, then remain duplicated in a collaboration thread. Security teams need a way to find the credential wherever it traveled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detection and remediation still matter even when prevention improves
&lt;/h2&gt;

&lt;p&gt;Better prevention changes the rate of new incidents. It does not automatically resolve the backlog of existing exposure, nor does it remove the need for fast incident response during active compromise.&lt;/p&gt;

&lt;p&gt;GitGuardian supports both detection and automated remediation — investigating incidents, validating risk, assigning ownership, and driving remediation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjau3epmvg6sna5ji4tzc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjau3epmvg6sna5ji4tzc.png" alt="GitGuardian NHI Governance dashboard view of an incident" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That workflow becomes even more useful during &lt;a href="https://blog.gitguardian.com/litellm-supply-chain-attack/" rel="noopener noreferrer"&gt;supply chain incidents&lt;/a&gt;, where the central problem is often not just that code was tampered with, but that credentials may already have been harvested, reused, or staged for later abuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honeytokens fit the current moment especially well
&lt;/h2&gt;

&lt;p&gt;GitHub plans to improve observability with an Actions Data Stream and a native egress firewall for GitHub-hosted runners — both roadmap items.&lt;/p&gt;

&lt;p&gt;If you need an earlier warning system in the meantime, &lt;a href="https://www.gitguardian.com/honeytoken?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian Honeytoken&lt;/a&gt; can help. Honeytokens are decoy credentials that track unauthorized usage, with a specific emphasis on DevOps pipeline security and supply chain attack detection. Place monitored fake credentials where an attacker searching for real ones is likely to find them, then alert when those credentials are touched.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dayg32uzu5ngfnuckb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dayg32uzu5ngfnuckb0.png" alt="How honeytokens work" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Attackers who compromise build and automation systems often go hunting for secrets very early. A honeytoken gives defenders a chance to detect that behavior before the attacker has turned a workflow compromise into something larger.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Governance Story About Non-human Identities
&lt;/h2&gt;

&lt;p&gt;Software delivery systems are now full of non-human identities making privileged decisions. Workflows authenticate to APIs. Actions call cloud services. Build systems publish artifacts. Bots trigger pipelines. Reusable workflows inherit trust from one repository to another. All of that adds up to a dense machine-to-machine access environment mediated largely by secrets.&lt;/p&gt;

&lt;p&gt;GitHub is improving that environment from the platform side. &lt;a href="https://www.gitguardian.com/nhi-governance?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian NHI Governance&lt;/a&gt; helps organizations discover where the keys to those lanes already lie, who owns them, where they have spread, and what needs to be fixed first.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnqyitf2587zkq674mxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnqyitf2587zkq674mxg.png" alt="GitGuardian NHI Governance Inventory view" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changes Now For Defenders
&lt;/h2&gt;

&lt;p&gt;The main takeaway from GitHub's 2026 Actions security roadmap: CI/CD security is becoming more explicit, more policy-driven, and more infrastructure-aware. Deterministic dependencies, scoped secrets, execution protections, telemetry streams, and outbound network controls all reflect a more mature model for securing automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But the immediate defender takeaway is simpler. You do not need to wait for the roadmap to become generally available to start reducing risk.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can reduce the ambient spread of secrets now.&lt;/li&gt;
&lt;li&gt;You can monitor the broader internal ecosystem now.&lt;/li&gt;
&lt;li&gt;You can tighten remediation around exposed credentials now.&lt;/li&gt;
&lt;li&gt;You can place early warning tripwires for attacker behavior now.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where GitGuardian fits in this transition. GitHub is building a safer future state for Actions. GitGuardian helps security teams operate safely in the current state, where secrets are already distributed, workflows are already trusted, and attackers are already treating CI/CD as a high-value target.&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>github</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Vercel April 2026 Incident: Non-Sensitive Environment Variables Need Investigation Too</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Mon, 18 May 2026 12:41:25 +0000</pubDate>
      <link>https://dev.to/gitguardian/vercel-april-2026-incident-non-sensitive-environment-variables-need-investigation-too-570a</link>
      <guid>https://dev.to/gitguardian/vercel-april-2026-incident-non-sensitive-environment-variables-need-investigation-too-570a</guid>
      <description>&lt;p&gt;&lt;a href="https://vercel.com/ja/kb/bulletin/vercel-april-2026-security-incident?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Vercel's April 2026 breach&lt;/a&gt; started with &lt;a href="https://context.ai/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Context.ai&lt;/a&gt;, a third-party AI tool.&lt;/p&gt;

&lt;p&gt;An attacker compromised the tool's Google Workspace OAuth app, hijacked a Vercel employee's account, then accessed environment variables that weren't marked "sensitive." Vercel is now asking customers to rotate those secrets, even though they were classified as non-sensitive.&lt;/p&gt;

&lt;p&gt;Vercel contacted the limited subset of customers whose credentials were confirmed compromised. But the broader lesson applies to any organization: a third-party OAuth compromise can cascade into internal systems fast. Vercel called the attacker "highly sophisticated" based on their speed and detailed knowledge of Vercel's systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Investigate, Then Rotate
&lt;/h2&gt;

&lt;p&gt;Assume any related secret is at risk until you've investigated it. Identify every exposed credential, check where it's used, and confirm whether it's active or already abused. Then revoke or rotate it, redeploy, and verify dependent services.&lt;/p&gt;

&lt;p&gt;Vercel's guidance is direct: use the "sensitive" flag for environment variables that contain API keys, tokens, database credentials, or signing keys. Sensitive variables are stored in a way that prevents them from being read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scan Your Environment Variables
&lt;/h2&gt;

&lt;p&gt;If you're a Vercel customer responding to this incident, start by pulling your environment variables locally and scanning them for exposed secrets.&lt;/p&gt;

&lt;p&gt;Pull your environment variables for each project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vercel &lt;span class="nb"&gt;env &lt;/span&gt;pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then scan the file with GitGuardian:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ggshield secret scan path .env.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See: &lt;a href="https://blog.gitguardian.com/how-to-use-ggshield-to-avoid-hardcoded-secrets-cheat-sheet-included/" rel="noopener noreferrer"&gt;How To Use ggshield To Avoid Hardcoded Secrets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitGuardian will identify which variables contain valid secrets — API keys, tokens, database credentials, signing keys. &lt;strong&gt;This gives you a prioritized list of what to rotate first.&lt;/strong&gt; You can also scan across multiple projects by pulling each environment file and scanning the directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ggshield secret scan path &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've identified exposed secrets, rotate them in your upstream services (like AWS, Stripe, or database providers) before updating the values in Vercel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Harden Controls for the Next Incident
&lt;/h2&gt;

&lt;p&gt;Vercel published the following guidance for customers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the activity log for your account and environments for suspicious activity — &lt;a href="https://vercel.com/activity-log?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;in the dashboard&lt;/a&gt; or via the &lt;a href="https://vercel.com/docs/cli/activity?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Review and rotate environment variables. If any contain secrets (API keys, tokens, database credentials, signing keys) that were &lt;strong&gt;not marked as sensitive&lt;/strong&gt;, those values should be treated as potentially exposed and rotated as a priority.&lt;/li&gt;
&lt;li&gt;Take advantage of the &lt;a href="https://vercel.com/docs/environment-variables/sensitive-environment-variables?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;sensitive environment variables&lt;/a&gt; feature going forward, so that secret values are protected from being read in the future.&lt;/li&gt;
&lt;li&gt;Investigate &lt;a href="https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fdeployments&amp;amp;ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;recent deployments&lt;/a&gt; for unexpected or suspicious looking deployments. If in doubt, delete any deployments in question.&lt;/li&gt;
&lt;li&gt;Ensure that &lt;a href="https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fsettings%2Fdeployment-protection&amp;amp;ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Deployment Protection&lt;/a&gt; is set to Standard at a minimum.&lt;/li&gt;
&lt;li&gt;Rotate your &lt;a href="https://vercel.com/docs/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Deployment Protection tokens&lt;/a&gt;, if set.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Bot Left a Fingerprint: Detecting and Attributing LLM-Generated Passwords</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Fri, 15 May 2026 13:15:27 +0000</pubDate>
      <link>https://dev.to/gitguardian/the-bot-left-a-fingerprint-detecting-and-attributing-llm-generated-passwords-578a</link>
      <guid>https://dev.to/gitguardian/the-bot-left-a-fingerprint-detecting-and-attributing-llm-generated-passwords-578a</guid>
      <description>&lt;p&gt;In February 2026, researchers at Irregular published a detailed post about LLM-generated passwords, showing how passwords generated by LLMs follow notable patterns and are generally highly predictable.&lt;/p&gt;

&lt;p&gt;The root cause is fundamental: LLMs are optimized to predict probable outputs, which is the exact opposite of what secure password generation demands.&lt;/p&gt;

&lt;p&gt;That observation raised a natural follow-on question: if LLMs leave statistical fingerprints in the passwords they generate, can those fingerprints be detected and attributed? Can we look at a password found in a leaked dataset and say which model generated it? More importantly, can we measure how widely those LLM passwords are used in the wild? That is what this research set out to answer.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iE6aidVxHd8"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Extending the perimeter
&lt;/h2&gt;

&lt;p&gt;We extended the scope of the analysis to 40 LLM models from 11 providers, including both closed-source (OpenAI GPT, Anthropic Claude, etc) and open-source (Qwen, DeepSeek, etc) models. We increased the password sample size to 200 for better statistical accuracy, generating a total dataset of 8,000 passwords.&lt;/p&gt;

&lt;p&gt;An initial analysis confirmed the original findings: we observe a bias in generated passwords, inconsistent across models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic's models show poor uniqueness&lt;/strong&gt;: Claude Opus 4.6 is the worst, with only 35% of unique passwords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source Qwen, Llama, and Gemma models&lt;/strong&gt; show between 50 and 60% uniqueness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The GPT-5 family&lt;/strong&gt; generates only unique passwords.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The uniqueness of generated passwords does not guarantee their security. Generated passwords tend to follow similar patterns and use common substrings. Nearly all models follow the same "upper, digit, symbol, lower" pattern repetition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anthropic models lock position 0 firmly: claude-opus always starts lowercase (100%), claude-haiku and claude-sonnet-4.6 always start uppercase (100%).&lt;/li&gt;
&lt;li&gt;Llama models are 99–100% uppercase at position 0.&lt;/li&gt;
&lt;li&gt;GPT-4.1-mini is 92% uppercase at position 0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All models exhibit a strong statistical deviation from random. The most common substrings per model (factor vs. random in parentheses):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gpt-5.2: the &lt;code&gt;7!&lt;/code&gt; bigram in 52% of passwords (x4.5k) and &lt;code&gt;vQ7!mZ&lt;/code&gt; substring in 6% (x41B)&lt;/li&gt;
&lt;li&gt;Mistral-medium-3.1: the &lt;code&gt;x7#pL9&lt;/code&gt; substring in 65% of passwords (x448B)&lt;/li&gt;
&lt;li&gt;Llama-3.3-70b-instruct: the &lt;code&gt;8d&lt;/code&gt; bigram in &lt;strong&gt;all&lt;/strong&gt; passwords, and &lt;code&gt;Gx#8dL&lt;/code&gt; in 96% — the worst score of all models.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interestingly, some substrings are shared across multiple providers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;L2&lt;/code&gt; bigram appears in passwords of 10 out of 11 providers, with an average probability of 27% (x114)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;#kL9&lt;/code&gt; substring appears in passwords from 4 providers (mistralai, deepseek, qwen, openai) at an average probability of 13% (x954M)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fighting robots with a rusty sword
&lt;/h2&gt;

&lt;p&gt;The previous results suggested that modeling LLM-generated passwords could be done using &lt;strong&gt;Markov chains&lt;/strong&gt; — a mathematical model introduced by Russian mathematician Andrei Markov in 1906, a full 100 years before LLMs.&lt;/p&gt;

&lt;p&gt;For password recognition, a Markov chain can be as simple as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One state for each letter of the alphabet&lt;/li&gt;
&lt;li&gt;Transitions set to the probability of encountering a character after the current state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7zb6rynrveoodki8iqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7zb6rynrveoodki8iqa.png" alt="A Markov chain trained with the passwords: PASS, P@SS, PA$$, etc" width="549" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We used the LLM-generated password sample to build multiple Markov chains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One chain per selected model&lt;/li&gt;
&lt;li&gt;One chain per model family or provider&lt;/li&gt;
&lt;li&gt;One chain aggregating the whole LLM password dataset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Results:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The chains identify the right model in &lt;strong&gt;55% of cases&lt;/strong&gt; and the correct provider in &lt;strong&gt;65% of cases&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The generic chain was, on average, half as surprised when seeing an LLM-generated password as when seeing a random value or generic password.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hunting bot passwords in the wild
&lt;/h2&gt;

&lt;p&gt;We classified a sample of passwords collected by GitGuardian's public monitoring platform: &lt;strong&gt;34 million passwords observed on GitHub between November 2025 and March 2026&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a conservative approach, we considered a password LLM-generated if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A model-specific chain predicts it with &amp;gt;75% confidence&lt;/li&gt;
&lt;li&gt;A provider-specific chain predicts it with &amp;gt;75% confidence&lt;/li&gt;
&lt;li&gt;The general chain sees the password with a perplexity level &amp;lt;100&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(We excluded xAI models because they often generate non-random-looking passwords like &lt;code&gt;P@ssw0rdS3cur3!2023&lt;/code&gt;, which would capture weak human-generated passwords.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With this method, we classified 28,000 passwords as LLM-generated.&lt;/strong&gt; The most predicted providers are Anthropic, Qwen, and Google — representing 63% of all occurrences.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;7951&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen&lt;/td&gt;
&lt;td&gt;6643&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;3184&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;2812&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amazon&lt;/td&gt;
&lt;td&gt;2661&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mistralai&lt;/td&gt;
&lt;td&gt;1710&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta Llama&lt;/td&gt;
&lt;td&gt;1498&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cohere&lt;/td&gt;
&lt;td&gt;1405&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deepseek&lt;/td&gt;
&lt;td&gt;182&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft&lt;/td&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Anthropic passwords are the most certain candidates, with an average confidence level of 92%.&lt;/p&gt;

&lt;p&gt;LLM-generated passwords have been committed consistently at an average rate of &lt;strong&gt;1,500 per week&lt;/strong&gt; during the study timeframe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7yfs08l9vozlleyyskc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7yfs08l9vozlleyyskc.png" alt="The number of passwords committed per week averages 1,500." width="600" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The passwords are mostly contained in JSON files, but a significant proportion are hardcoded in source and configuration files. &lt;strong&gt;1,800 &lt;code&gt;.env&lt;/code&gt; files&lt;/strong&gt; were found to contain at least one LLM-generated secret — including application security keys, encryption keys, and passwords for third-party services.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="c"&gt;# Company AWS Services Configuration
&lt;/span&gt;&lt;span class="n"&gt;USE_AWS_SERVICES&lt;/span&gt;=&lt;span class="n"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;AWS_REGION&lt;/span&gt;=&lt;span class="n"&gt;us&lt;/span&gt;-&lt;span class="n"&gt;east&lt;/span&gt;-&lt;span class="m"&gt;1&lt;/span&gt;

&lt;span class="c"&gt;# Database
&lt;/span&gt;&lt;span class="n"&gt;DATABASE_PASSWORD&lt;/span&gt;=&lt;span class="n"&gt;Kx9mP2vQ8nR5tY7w&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;A typical LLM-generated password used to connect to a database.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="s2"&gt;"lx01"&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"lx01"&lt;/span&gt;
  &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"x7QpL2n9V8F5"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;A typical LLM-generated password used as the default password of Terraform-generated machines.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqp0x5f7pdhykal9aj2w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqp0x5f7pdhykal9aj2w.png" alt="The most frequent file extensions include configuration and source files." width="709" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Among the 8,700 commits containing a predicted Anthropic-generated password, &lt;strong&gt;41 are announced as co-authored by Claude&lt;/strong&gt; — validating that AI Agents can independently generate and hardcode passwords in code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means in practice
&lt;/h2&gt;

&lt;p&gt;The prevalence of LLM-generated passwords is not widespread when compared to total leaked passwords. But two behaviors are worth noting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Some people are using LLMs as password generators
&lt;/h3&gt;

&lt;p&gt;We observed LLM-generated passwords used in connection strings to web and database services. Unless the coding agent configured those services, a user purposely asked an AI to generate their password.&lt;/p&gt;

&lt;p&gt;Asking an AI agent to generate a password is a bad practice. The password transits through the network, the LLM provider will know it, and it might end up logged in an agent log file — &lt;strong&gt;leaked before even reaching the developer's machine&lt;/strong&gt;. And as we've shown, those passwords will be weak and mostly predictable.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Agents autonomously generate and hardcode passwords
&lt;/h3&gt;

&lt;p&gt;We observed LLM-generated passwords hardcoded in Terraform files and committed by AI agents. While not widespread, this behavior exists — and even if the code isn't publicly leaked, the password predictability enables efficient online enumeration.&lt;/p&gt;

&lt;p&gt;This risk should be taken into account when designing your AI security policy. Some of the passwords in this category were generated using flagship models, so the issue isn't limited to older or entry-level models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attacking and defending
&lt;/h2&gt;

&lt;p&gt;Markov chains could also be used to &lt;strong&gt;attack&lt;/strong&gt; LLM-generated passwords with much higher efficiency than brute-force. Common password-cracking tools already implement a Markov mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;calc_stat opus_46.passwords opus_46.john.stats
&lt;span class="go"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vim john.conf
&lt;span class="go"&gt;[Markov:opus46]
Statsfile = opus_46.john.stats
MkvLvl = 400
MkvMaxLen = 20
MkvMinLen = 16

&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;john &lt;span class="nt"&gt;--markov&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;opus46 &lt;span class="nt"&gt;--stdout&lt;/span&gt;
&lt;span class="gp"&gt;k7$&lt;/span&gt;Lm9#Qx2vP!nW4rT&amp;amp;jR&amp;amp;j
&lt;span class="gp"&gt;k7$&lt;/span&gt;Lm9#Qx2vP!nW4rT&amp;amp;jR&amp;amp;8
&lt;span class="go"&gt;[...]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;John The Ripper generating Opus 4.6-looking passwords.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On the defender side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMs should not be used as password generators.&lt;/strong&gt; Use a vault, password manager, or dedicated tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent-generated passwords require tight guardrails.&lt;/strong&gt; GitGuardian's &lt;a href="https://github.com/GitGuardian/ggshield?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;ggshield&lt;/a&gt; now supports scanning AI agent hook events for secrets — as simple as:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ggshield &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; cursor &lt;span class="nt"&gt;-m&lt;/span&gt; global
&lt;span class="nv"&gt;$ &lt;/span&gt;ggshield &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; claude &lt;span class="nt"&gt;-m&lt;/span&gt; global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Setting up ggshield to scan Claude and Cursor hook events for secrets.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's a small step, but given what's at stake, it's one no team shipping AI-assisted code can afford to skip.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>research</category>
      <category>programming</category>
    </item>
    <item>
      <title>GitGuardian Now Flags Admin and Overprivileged Identities Across AWS, Entra, and Okta</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Thu, 14 May 2026 13:41:39 +0000</pubDate>
      <link>https://dev.to/gitguardian/gitguardian-now-flags-admin-and-overprivileged-identities-across-aws-entra-and-okta-3ch9</link>
      <guid>https://dev.to/gitguardian/gitguardian-now-flags-admin-and-overprivileged-identities-across-aws-entra-and-okta-3ch9</guid>
      <description>&lt;p&gt;Not all leaked secrets carry the same risk. A leaked credential attached to a read-only logging job is more of a hygiene issue. The same credential attached to an AdministratorAccess role hands an attacker complete control of the account. Treating both incidents identically in the queue wastes responder time on the first and delays action on the second.&lt;/p&gt;

&lt;p&gt;GitGuardian's latest NHI Governance release introduces privilege context as a first-class signal in the platform. The system now identifies which machine identities hold admin-level rights, surfaces those that have accumulated more permissions than they actually use, and automatically escalates the severity of incidents landing on those high-impact identities. Your remediation queue starts to reflect the real blast radius of each finding.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing dimension in NHI risk
&lt;/h2&gt;

&lt;p&gt;Most security teams have spent the last few years getting a grip on where their non-human identities live. Service accounts, OAuth apps, CI/CD tokens, IAM roles, and agentic AI workloads now sit inside inventories that were unimaginable three years ago. &lt;a href="https://blog.gitguardian.com/owasp-top-10-non-human-identity-risks/" rel="noopener noreferrer"&gt;The OWASP Top 10 for Non-Human Identities&lt;/a&gt; formalized the obvious risk patterns, including leaked secrets, reuse, long-lived credentials, and broken offboarding.&lt;/p&gt;

&lt;p&gt;Inventories still lacked one further dimension: the blast radius of each identity. An overprivileged NHI amplifies every other risk attached to it. A reused secret on a global admin account exposes the entire tenant. Recognizing that distinction at scale used to require manually crawling through IAM policies, directory role assignments, and custom permission sets. That work struggles to keep up across thousands of identities and multiple clouds.&lt;/p&gt;

&lt;p&gt;Customer conversations repeatedly surfaced the same asks: visibility into orphaned and overprivileged accounts, real-time tracking of agent permissions, and a way to detect when a workload sits on more access than its job requires. AI agents now connect to trading systems and production data stores, raising the cost of unanswered privilege questions every quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Admin badge
&lt;/h2&gt;

&lt;p&gt;When NHI Governance maps the permissions attached to an identity and finds an admin or equivalent role, that identity now carries an explicit "Identity level: Admin" badge in the inventory and detail view. Detection runs on well-known role and policy markers across AWS IAM, Microsoft Entra, and Okta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nxkkt1yf4hj2fn47nom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nxkkt1yf4hj2fn47nom.png" alt="An AWS deploy key flagged as Admin, with AdministratorAccess, IAMFullAccess, and wildcard action permissions visible on the linked production account." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS coverage&lt;/strong&gt; surfaces managed policies such as AdministratorAccess, PowerUserAccess, and IAMFullAccess, alongside inline statements that grant &lt;code&gt;Action: *&lt;/code&gt; on &lt;code&gt;Resource: *&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entra coverage&lt;/strong&gt; spans directory roles like Global Administrator, Privileged Role Administrator, and Application Administrator, plus Azure RBAC roles such as Owner and Contributor, and high-privilege Microsoft Graph permissions like RoleManagement.ReadWrite.Directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Okta detection&lt;/strong&gt; covers the built-in Super Admin role and custom admin role assignments.&lt;/p&gt;

&lt;p&gt;The badge appears wherever the identity is listed, giving security and platform teams a single visual signal that a leak, a reused key, or a broken offboarding event sits on top of full account-level access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Overprivileged Identity policy
&lt;/h2&gt;

&lt;p&gt;Admin status answers a binary question. Overprivilege sits in the messier middle, where identities accumulate permissions far beyond what their workloads actually require. The new Overprivileged Identity policy flags permission sets that have drifted. Detection covers wildcard actions, sweeping resource scopes, and large bundles of high-privilege graph grants. The effect over time is a steady push back toward least privilege for the long tail of NHIs that grew bigger one ticket at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Risk criticality that reflects the blast radius
&lt;/h2&gt;

&lt;p&gt;When a policy breach affects an admin NHI, its severity is automatically raised one level, with critical as the maximum. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An internally leaked secret previously registered as high on an admin identity now registers as critical.&lt;/li&gt;
&lt;li&gt;An overprivileged finding on a non-admin identity stays at medium. On an admin identity, the same finding moves to high.&lt;/li&gt;
&lt;li&gt;Improper offboarding of an admin identity is rated critical rather than high.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is layered. A base severity per policy breach forms the foundation, with modifiers stacking on top for admin status and, where relevant, production exposure. The dashboard now aligns with how seasoned incident responders naturally triage.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;Imagine GitGuardian finds an internal secret leak in a private repository. The secret belongs to an Entra application registered with RoleManagement.ReadWrite.Directory — a permission that allows the app to grant itself any directory role. Without privileged context, the incident surfaces as a high-severity internal leak, sandwiched among hundreds of similar findings on read-only services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8d6q3kbjmi2lraaoxis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8d6q3kbjmi2lraaoxis.png" alt="An Entra application registered with RoleManagement.ReadWrite.Directory carries the Admin badge and inherits Critical risk." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this release, NHI Governance recognizes the application's admin-equivalent rights, tags it with the Admin badge, and bumps the incident to critical. The responder opens the queue, finds the critical at the top, and acts on the priority the new severity reveals: rotate the secret, audit recent role assignments, and check for newly granted application permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three moves to put this to work this week
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sort your inventory by risk criticality.&lt;/strong&gt; The identities your program should worry about most now rank at the top of the view, ahead of the long tail of low-impact noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filter by Identity level: Admin and run an access review.&lt;/strong&gt; Every admin NHI deserves a named owner, a documented purpose, and a rotation plan. Identities missing any of those three controls form your immediate remediation list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Surface Overprivileged Identity breaches and pair the filter with environmental context.&lt;/strong&gt; Overprivileged identities in a sandbox slot into the backlog. The same identities in production belong to this sprint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rdxhluxwdnmyxj4eyd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rdxhluxwdnmyxj4eyd.png" alt="NHI Governance inventory filtered for admin identities with an active Overprivileged breach" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From privilege context to better prioritization
&lt;/h2&gt;

&lt;p&gt;Privilege has always been a missing axis in NHI risk. Stamping admin status onto an identity does the unglamorous work of separating the five incidents that could compromise an entire cloud account or directory tenant from an inventory of hundreds or thousands of incidents. With this release, NHI Governance moves that distinction from tribal knowledge into the product — across AWS, Entra, and Okta — inside the same workflow security teams already use every day.&lt;/p&gt;

&lt;p&gt;Future increments will build on this foundation. Privilege escalation paths and usage-based overprivilege detection will extend the same model with stronger signals and additional API integrations. The most valuable action available today is opening NHI Governance, sorting by risk criticality, and seeing which identities the security team has been quietly under-prioritizing.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1RoDARAKa3s"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Available today to NHI Governance customers. Read the &lt;a href="https://docs.gitguardian.com/releases/saas/2026/04/16/changelog?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;release note&lt;/a&gt; or the &lt;a href="https://docs.gitguardian.com/nhi-governance/improve-your-posture?ref=blog.gitguardian.com#identify-admin-identities" rel="noopener noreferrer"&gt;admin identities documentation&lt;/a&gt; for setup details.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Identity Access Management Strategy for Non-Human Identities</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Wed, 13 May 2026 13:00:01 +0000</pubDate>
      <link>https://dev.to/gitguardian/identity-access-management-strategy-for-non-human-identities-4d4k</link>
      <guid>https://dev.to/gitguardian/identity-access-management-strategy-for-non-human-identities-4d4k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Non-human identities now represent the majority of active identities in cloud-native enterprises. Most security leaders recognize this shift. Still, many organizations rely on an IAM strategy that focuses the majority of its resources on humans. This architectural mismatch creates a significant blind spot. Modern identity and access management strategies must treat non-human identities as governed assets with inventory, scoped authorization, short-lived authentication, continuous exposure detection, and enforceable revocation mechanisms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Identity Creation Has Moved from HR to Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqk9z4tsmwg92u8cgwvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqk9z4tsmwg92u8cgwvi.png" alt="Common scenarios for identity creation" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a traditional environment, digital identities originate in Human Resources — a new hire joins, HR triggers a workflow, and the IAM system provisions accounts. The process is linear and &lt;em&gt;human-governed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In contrast, &lt;em&gt;non-human identities&lt;/em&gt; originate from infrastructure and software workflows. This changes the &lt;a href="https://blog.gitguardian.com/identity-lifecycle-management-for-nhis/" rel="noopener noreferrer"&gt;identity lifecycle management&lt;/a&gt; process. Common scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD pipelines provision roles automatically to deploy code.&lt;/li&gt;
&lt;li&gt;Kubernetes generates service accounts dynamically.&lt;/li&gt;
&lt;li&gt;SaaS integrations create API credentials outside of any formal IAM review.&lt;/li&gt;
&lt;li&gt;AI systems generate new integration surfaces as they interact with other tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Identity velocity has increased beyond the speed of traditional governance. &lt;a href="https://blog.gitguardian.com/spice-wimse-and-scitt/" rel="noopener noreferrer"&gt;Machine identities&lt;/a&gt; don't go through approval workflows. When you embed identity creation into engineering workflows, you must integrate it into your identity management strategy. Governance cannot remain a downstream activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scale and Persistence: The Compounding Risk of Machine Identities
&lt;/h2&gt;

&lt;p&gt;Your non-human identity management strategy must account for the fact that these entities operate 24/7. Unlike humans who go home at the end of the day, many machine identities have persistent credentials used around the clock, often without human knowledge.&lt;/p&gt;

&lt;p&gt;Machine identities scale automatically with infrastructure. An auto-scaling event could generate hundreds of new instances, each requiring workload identities. These identities rarely trigger lifecycle events — machine identities can linger for months after they finish their primary task.&lt;/p&gt;

&lt;p&gt;This creates a structural compounding effect: more automation leads to more service accounts, which leads to more credentials, which leads to more exposure vectors.&lt;/p&gt;

&lt;p&gt;Most IAM programs have a key asymmetry: organizations periodically review human access but rarely assess machine access. The result is persistence of privilege without awareness — thousands of identities with access to sensitive data and zero oversight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Traditional IAM Programs Lose Control
&lt;/h2&gt;

&lt;p&gt;Traditional programs assume stable identity populations and HR-driven lifecycles. &lt;a href="https://www.gitguardian.com/nhi-hub/nhi-lifecycle-management?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Non-human identities&lt;/a&gt; introduce ephemeral creation, infrastructure-level provisioning, and credential-based authentication outside of standard SSO flows. Ownership is often shared or unclear, making regular access reviews nearly impossible.&lt;/p&gt;

&lt;p&gt;Investigate your access management tool and you'll probably find it doesn't:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Discover hardcoded secrets hidden in source code or collaboration tools.&lt;/li&gt;
&lt;li&gt;Correlate leaked credentials to specific identities.&lt;/li&gt;
&lt;li&gt;Detect orphaned service accounts at scale.&lt;/li&gt;
&lt;li&gt;Monitor authentication artifacts outside of standard IdP telemetry.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a failure of scope rather than tooling. You must redesign your IAM strategy around the concept of blast radius.&lt;/p&gt;

&lt;h2&gt;
  
  
  IAM Strategy Is Ultimately About Blast Radius
&lt;/h2&gt;

&lt;p&gt;Every IAM design decision determines the damage a compromised credential can cause and how quickly you can contain it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Broad roles and rights&lt;/strong&gt; increase lateral movement risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long-lived tokens&lt;/strong&gt; increase the exposure window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared credentials&lt;/strong&gt; eliminate attribution, making breaches harder to trace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poor revocability&lt;/strong&gt; slows your team when stopping an active breach.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Strategic Pillars of Non-Human Identity IAM
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf7jpd5zwxbrkr0fbasw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf7jpd5zwxbrkr0fbasw.png" alt="Strategic pillars for NHI IAM" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Authoritative Identity Inventory
&lt;/h3&gt;

&lt;p&gt;An effective &lt;a href="https://blog.gitguardian.com/non-human-identity-security-zero-trust-architecture/" rel="noopener noreferrer"&gt;non-human identity management&lt;/a&gt; strategy starts with a complete inventory of service accounts, workload identities, federated identities, SaaS integration credentials, and associated secrets. Map each identity to its credential, owner, and access scope. Without mapping, access reviews have no foundation and revocation has no target.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Authentication Modernization
&lt;/h3&gt;

&lt;p&gt;Static API keys are common but dangerous. Modern strategies favor OIDC/OAuth 2.0 with scoped delegation, managed identities, workload federation, and certificate-based identity.&lt;/p&gt;

&lt;p&gt;Note: Managed identities are cloud-provider-specific constructs (e.g., Azure Managed Identities, AWS instance profiles). Workload identity federation takes a standards-based approach, allowing workloads to authenticate using short-lived tokens without static credentials.&lt;/p&gt;

&lt;p&gt;Eliminating static secrets reduces exposure risk — but it won't solve overprivilege. Combine modern authentication with strict access policies.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Privilege Containment and Scope Discipline
&lt;/h3&gt;

&lt;p&gt;Service accounts often accumulate privilege over time because broad access is operationally convenient. To counter this: enforce a unique identity per workload, use environment segmentation, and &lt;em&gt;avoid shared service accounts at all costs&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Use minimal IAM role design and remember that least privilege for machines requires continuous reassessment. Role-based access control (RBAC) provides a structured baseline; attribute-based access control (ABAC) enables more granular, context-aware enforcement for dynamic machine workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Lifecycle Governance and Rotation Discipline
&lt;/h3&gt;

&lt;p&gt;Automate governance for machines: automated provisioning and deprovisioning, "expiration by default" as standard policy, automated rotation of secrets and certificates.&lt;/p&gt;

&lt;p&gt;Your rotation policy is incomplete without exposure detection. If a secret leaks, rotating it every 90 days isn't enough — you need to know about the exposure the moment it happens. Continuous monitoring shortens the compromise window when prevention fails.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Continuous Exposure Monitoring
&lt;/h3&gt;

&lt;p&gt;Modern IAM must be continuous. An effective strategy detects real-world credential compromises in repositories, logs, and generated artifacts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian&lt;/a&gt; provides continuous monitoring for secret exposure across internal and public environments, correlating discovered credentials to your identity inventory and enabling immediate revocation workflows before compromised credentials are exploited.&lt;/p&gt;

&lt;p&gt;According to research, &lt;a href="https://www.cyberark.com/resources/blog/the-urgent-reality-of-machine-identity-security-in-2025?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;77% of security leaders&lt;/a&gt; fear undiscovered non-human identities in their environments, and &lt;a href="https://www.businesswire.com/news/home/20250313883089/en/New-CyberArk-Research-Rapid-Growth-of-Machine-Identities-AI-Adoption-and-Cloud-Native-Innovations-Leave-Organizations-More-Vulnerable-to-Attacks?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;50% of organizations&lt;/a&gt; have reported breaches linked to compromised machine identities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operating Model: Who Owns Machine Identity Risk?
&lt;/h2&gt;

&lt;p&gt;There's often tension among IAM teams, cloud platform teams, DevSecOps teams, and application owners. Develop a clear ownership model that includes centralized reporting on &lt;a href="https://www.gitguardian.com/nhi-hub/building-a-non-human-identity-security-strategy?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;NHI risk&lt;/a&gt;. Executive oversight and shared metrics ensure NHI IAM is treated as a cross-functional architecture, not a narrow security project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maturity Roadmap for Enterprise Adoption
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhcj99au3zxneqinde0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhcj99au3zxneqinde0d.png" alt="Maturity roadmap for enterprise adoption" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Visibility and Risk Baseline&lt;/strong&gt; — Use secrets security tools to detect exposed secrets and map gaps in your ownership model. Establish your baseline security risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Containment and Modernization&lt;/strong&gt; — Reduce static credentials, implement short-lived authentication, enforce unique identities for every workload, scope privileges as tightly as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Continuous Governance&lt;/strong&gt; — Integrate NHIs into standard certification cycles, automate secret rotation, continuously monitor for exposure. Define executive KPIs reflecting containment maturity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Machine-Centric IAM
&lt;/h2&gt;

&lt;p&gt;We're moving toward AI-generated infrastructure and machine-to-machine trust negotiation. IAM strategies will evolve from static policy enforcement to adaptive identity governance. Companies will standardize identity risk scoring and automated privilege tuning, with secret visibility as a critical input signal for identity risk posture.&lt;/p&gt;

&lt;p&gt;The organizations that integrate visibility, scoped authorization, and continuous secret monitoring into their architecture will enable secure automation. Those who don't will experience identity-driven incidents that the right IAM policies could have prevented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;An effective identity and access strategy shouldn't focus on user authentication alone. It should focus on containing autonomous access at scale. Non-human identities are the primary vector of enterprise attack surface expansion. By integrating visibility, lifecycle governance, and continuous monitoring, you can protect sensitive data and maintain a strong security posture — even as your automation efforts scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How should IAM programs redefine success metrics for non-human identities?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Track completeness of identity-to-owner mapping, percentage of short-lived credentials in use, exposure-to-revocation time, and reduction of orphaned identities. These reflect containment maturity, not just compliance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the most common architectural mistake in NHI IAM programs?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Treating authentication modernization as sufficient. Replacing API keys with managed identities reduces exposure risk but doesn't solve overprivilege. Strong authentication does not compensate for a lack of least privilege access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does secret exposure detection integrate into IAM strategy?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secret detection provides real-time telemetry about credential compromise outside formal IAM channels. Integrating this exposure data enables rapid revocation and rotation, and allows risk scores to be adjusted based on real-world exposure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should non-human identities be included in access certification processes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, but not through manual quarterly reviews. Certification for NHIs should incorporate automated privilege analysis, activity-based validation, and exposure telemetry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What differentiates mature NHI governance from basic secrets management?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secrets management focuses on secure credential storage. Mature NHI governance includes identity inventory, ownership mapping, scoped authorization, automated rotation, exposure detection, and revocation discipline — an architectural control framework, not just a vault implementation.&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top 11 Identity Orchestration Tools and Platforms for 2026</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Tue, 12 May 2026 12:23:46 +0000</pubDate>
      <link>https://dev.to/gitguardian/top-11-identity-orchestration-tools-and-platforms-for-2026-46e</link>
      <guid>https://dev.to/gitguardian/top-11-identity-orchestration-tools-and-platforms-for-2026-46e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Identity orchestration unifies fragmented IAM environments by connecting identity providers, directories, access policies, and governance workflows into a single, automated control plane. The top identity orchestration tools in 2026 fall into several categories: identity orchestration engines, IAM platforms with orchestration capabilities, identity governance and lifecycle platforms, and secrets security and NHI exposure prevention. Most enterprises need an orchestration layer to unify identity flows &lt;strong&gt;and&lt;/strong&gt; a secrets security layer to ensure credentials and non-human identities (NHIs) aren't compromised.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Identity Orchestration Is a Top Priority in 2026
&lt;/h2&gt;

&lt;p&gt;For context, the average enterprise manages identities across 5 to 10+ identity providers, directories, and access management systems.&lt;/p&gt;

&lt;p&gt;The result? Fragmented access policies, inconsistent lifecycle management, identity blind spots, and a sprawling attack surface. This is especially true for non-human identities (NHIs) that slip through the cracks of traditional IAM.&lt;/p&gt;

&lt;p&gt;This is why identity orchestration — the practice of connecting, coordinating, and automating identity management across multiple systems through a unified control plane — is so important. Rather than ripping and replacing your existing identity stack, identity orchestration software sits above it, enforcing consistent policies, automating lifecycle workflows, and centralizing visibility across all connected systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Need for Identity Orchestration Software
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqzi02mleod8iew9vup3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqzi02mleod8iew9vup3e.png" alt="Need for Identity Orchestration Software" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-cloud and hybrid identity sprawl.&lt;/strong&gt; Organizations running workloads across AWS, Azure, GCP, and on-premises end up with disconnected identity silos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy-to-modern IAM migration complexity.&lt;/strong&gt; Many companies run critical applications on legacy systems that depend on LDAP or on-premises Active Directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS and third-party integration explosion.&lt;/strong&gt; Every SaaS tool comes with its own identity requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-human identity proliferation.&lt;/strong&gt; API keys, service accounts, OAuth tokens, and certificates now outnumber human identities in most enterprise environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-trust architecture requirements.&lt;/strong&gt; Zero trust demands continuous verification and centralized policy enforcement across every identity interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance complexity.&lt;/strong&gt; Meeting SOC 2, ISO 27001, and PCI DSS requirements across a multi-vendor IAM stack creates significant overhead without a centralized governance layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The NHI Blind Spot in Identity Orchestration
&lt;/h3&gt;

&lt;p&gt;Identity orchestration platforms manage identity flows and access policies. But these tools can't detect if the credentials moving through said flows are compromised. If an API key was hardcoded in a repository two years ago and has been sitting exposed in git history ever since, rotating it through an orchestration workflow would only partially help until someone finds and remediates the original leak.&lt;/p&gt;

&lt;p&gt;This is why it's important to integrate a dedicated secrets security platform like GitGuardian with the specific identity orchestration solution you choose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Capabilities of Modern Identity Orchestration Platforms
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qc40ho8lhh150fewe6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qc40ho8lhh150fewe6g.png" alt="Key Capabilities of Modern Identity Orchestration Platforms" width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Identity Unification and Fabric Architecture&lt;/strong&gt; — Connect multiple identity providers, directories, and cloud IAM systems through a single control plane with protocol normalization across SAML, OIDC, OAuth, SCIM, and LDAP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Workflow Automation and No-Code Orchestration&lt;/strong&gt; — Visual workflow builders for identity journeys, provisioning, deprovisioning, and lifecycle events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Multi-Cloud and Hybrid Support&lt;/strong&gt; — Cross-cloud identity federation, on-premises app bridging, and Kubernetes support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Non-Human Identity Coverage&lt;/strong&gt; — Service account discovery, API key and token lifecycle orchestration, machine identity visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Governance, Compliance, and Audit&lt;/strong&gt; — Centralized audit trails, compliance reporting for SOC 2/ISO 27001/PCI DSS, risk scoring and access reviews.&lt;/p&gt;




&lt;h2&gt;
  
  
  Top Identity Orchestration Tools for 2026
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Strata Identity
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fbtmn4kcvpmhyb3xwiw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fbtmn4kcvpmhyb3xwiw.png" alt="Strata Identity" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Identity orchestration and identity fabric platform&lt;/p&gt;

&lt;p&gt;Strata Identity pioneered the "identity fabric" approach. The platform abstracts identity infrastructure into a unified orchestration layer, helping companies modernize legacy apps, consolidate multi-cloud identities, and enforce consistent policies without rip-and-replace migrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; True identity fabric approach with strong multi-IdP unification. Excellent for legacy-to-modern migration. Strong multi-cloud and hybrid support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Not focused on secrets exposure detection. Organizations should layer secrets security tooling to cover leaked credentials passing through orchestration workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Ideal for large enterprises with complex, multi-IdP environments undergoing legacy IAM modernization. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://strata.io/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;strata.io&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Ping Identity (PingOne DaVinci)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre9982gxugqa76ciewjt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre9982gxugqa76ciewjt.png" alt="Ping Identity" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; No-code identity orchestration engine&lt;/p&gt;

&lt;p&gt;PingOne DaVinci lets identity teams build adaptive authentication flows and visual identity journeys without custom development, with a library of connectors for IdPs, MFA providers, and fraud detection tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Powerful no-code orchestration with mature connector ecosystem. Adaptive access and risk-based authentication. Well-integrated with the Ping Identity platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Best within the Ping ecosystem. No secrets exposure detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Strong for enterprises already in the Ping ecosystem. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://pingidentity.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;pingidentity.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Simeio
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr8wuti572fgae5g1id6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr8wuti572fgae5g1id6.png" alt="Simeio" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Managed identity orchestration services&lt;/p&gt;

&lt;p&gt;Simeio combines an identity orchestrator platform with managed identity services, connecting disparate IAM platforms like Okta, Azure AD, and SailPoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Managed-service model reduces operational burden. Good multi-vendor IAM unification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; May not suit organizations preferring self-service platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Quality for enterprises needing managed orchestration across multiple IAM vendors. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://simeio.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;simeio.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Auth0 (Okta)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filxgzhykql8zggbb6t6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filxgzhykql8zggbb6t6w.png" alt="Auth0" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Developer-centric identity platform with orchestration capabilities&lt;/p&gt;

&lt;p&gt;Auth0 provides a developer-first identity platform with flexible orchestration through its "Actions and Rules" framework. Strong support for Machine-to-Machine (M2M) authentication via OAuth2 client credentials flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Very developer-friendly. Flexible Actions framework. Strong community and marketplace ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Orchestration is code-driven, requiring developer involvement. Not a multi-IdP fabric.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Excellent for developer-led organizations and SaaS companies. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://auth0.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;auth0.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Microsoft Entra ID (Azure AD)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqn4a8nj5cu5zqmstvsiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqn4a8nj5cu5zqmstvsiy.png" alt="Microsoft Entra ID" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Enterprise IAM platform with orchestration and governance&lt;/p&gt;

&lt;p&gt;Microsoft Entra ID provides identity orchestration through conditional access policies, identity governance workflows, and workload identity management as part of the Microsoft ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Deep Microsoft/Azure integration. Strong conditional access and governance. Native workload identity support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Limited for multi-vendor, multi-IdP orchestration outside Azure. No secrets exposure scanning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Essential for Microsoft-centric enterprises. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;microsoft.com/en-us/security/business/identity-access/microsoft-entra-id&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  6. TrustBuilder
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0zzj82copy9u8jgchud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0zzj82copy9u8jgchud.png" alt="TrustBuilder" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; European identity orchestration and access management&lt;/p&gt;

&lt;p&gt;TrustBuilder emphasizes European data sovereignty and GDPR-aligned identity governance with a visual workflow editor and adaptive authentication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Strong visual workflow orchestration. Good fit for European enterprises with data sovereignty requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Smaller ecosystem than US-based platforms. Limited NHI exposure visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Suitable for European enterprises needing orchestration with GDPR compliance. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://trustbuilder.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;trustbuilder.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Tech Prescient (Identity Confluence)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjrt0u1s16ulcscecx83y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjrt0u1s16ulcscecx83y.png" alt="Tech Prescient" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Customized identity orchestration and automation&lt;/p&gt;

&lt;p&gt;Tech Prescient offers Identity Confluence, a customizable orchestration platform with white-glove implementation services for complex enterprise requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Highly customizable. Strong consulting support. Good hybrid coverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; More services-oriented than a pure SaaS product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Good for enterprises with complex, customized requirements. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://techprescient.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;techprescient.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  8. SailPoint
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2dueckf9ienmlcj33hw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2dueckf9ienmlcj33hw.png" alt="SailPoint" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Identity governance and orchestration platform&lt;/p&gt;

&lt;p&gt;SailPoint is a leading IGA platform that has expanded into identity orchestration with workflow automation, AI-driven access recommendations, and support for both human and non-human identities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Market-leading IGA capabilities. AI-driven access governance insights. Broad connector ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; More IGA than dedicated orchestration. No secrets exposure detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Quality choice for enterprises needing IGA as their orchestration foundation. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://sailpoint.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;sailpoint.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Saviynt
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5v6bjikr5oyxkod7872.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5v6bjikr5oyxkod7872.png" alt="Saviynt" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Cloud-native identity governance and orchestration&lt;/p&gt;

&lt;p&gt;Saviynt provides cloud-native IGA with orchestration capabilities, integrating IGA and PAM capabilities with continuous risk scoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Strong cloud-native architecture. Good IGA + PAM integration. Risk-based analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; More IGA than orchestration. Less focused on developer workflows and secrets exposure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Solid for cloud-first enterprises needing IGA with orchestration and PAM. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://saviynt.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;saviynt.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  10. ConductorOne
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uidril25zjyozcjtpmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uidril25zjyozcjtpmg.png" alt="ConductorOne" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Identity security and access orchestration&lt;/p&gt;

&lt;p&gt;ConductorOne automates access reviews, streamlines provisioning, and provides an identity graph showing who has access to what across SaaS and cloud apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Fast to deploy with a modern, lightweight approach. Strong automated access reviews. Good NHI visibility for service accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Still-growing connector ecosystem. Less focused on legacy/on-premises identity. No secrets exposure detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Great for modern, cloud-first teams. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://conductorone.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;conductorone.com&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  11. Okta (Workforce Identity Cloud)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0nfduax2m7ef83k36ki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0nfduax2m7ef83k36ki.png" alt="Okta" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Enterprise IAM platform with orchestration workflows&lt;/p&gt;

&lt;p&gt;Okta's Workforce Identity Cloud provides SSO, adaptive MFA, lifecycle management, and identity governance through Okta Workflows — a no-code automation engine with 7,000+ pre-built integrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; Massive integration ecosystem. Powerful no-code Workflows engine. Strong adaptive MFA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; Orchestration stays within the Okta ecosystem. No secrets exposure detection or NHI credential scanning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Best for enterprises already using Okta as a primary IdP. &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://okta.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;okta.com&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Secrets Security Layer Every Orchestration Stack Needs
&lt;/h2&gt;

&lt;p&gt;None of the tools above offer secrets security and NHI exposure intelligence — using them in isolation weakens your security posture.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitGuardian
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rmzuct5v148uy76myhn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rmzuct5v148uy76myhn.png" alt="GitGuardian" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Secrets security and NHI exposure intelligence for identity orchestration&lt;/p&gt;

&lt;p&gt;GitGuardian is an enterprise-grade secrets security and NHI exposure platform that provides the critical security layer identity orchestration stacks need. While orchestration platforms unify and automate identity flows, GitGuardian ensures the credentials, API keys, tokens, and service account secrets moving through those flows aren't compromised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Features:&lt;/strong&gt; Internal Secrets Monitoring, Public Secrets Monitoring, NHI Governance, CI/CD Pipeline Scanning (via ggshield), Collaboration Tool Coverage (Slack/Jira/Confluence/Teams), Vault Integration (HashiCorp Vault, CyberArk), Agentic AI Security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise Fit:&lt;/strong&gt; Essential for any large company deploying identity orchestration and wanting to ensure credentials flowing through their workflows are secure and properly governed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://gitguardian.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;gitguardian.com&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Implementation Strategy for Enterprise Identity Orchestration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc9z05pomro4ito3qvdu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc9z05pomro4ito3qvdu3.png" alt="Implementation Strategy" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Identity Discovery and Orchestration Deployment&lt;/strong&gt; — Inventory all identity providers and federated trust relationships. Deploy orchestration aligned with your architecture. Bridge legacy and modern identity protocols.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Credential Hygiene and Secrets Exposure Remediation&lt;/strong&gt; — Scan all repositories (including full git history), CI/CD pipelines, and collaboration tools for leaked secrets. Identify and remediate hardcoded credentials. Deploy continuous secrets monitoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: NHI Governance and Continuous Monitoring&lt;/strong&gt; — Discover and inventory all non-human identities. Automate secret rotation and certificate renewal. Enforce least-privilege for all NHIs. Establish clear ownership models across AppSec, IAM, and Platform Engineering.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Future of Identity Orchestration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity fabric convergence&lt;/strong&gt; — Dedicated orchestration platforms, IGA tools, and PAM solutions are converging into unified platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-driven orchestration&lt;/strong&gt; — Autonomous identity workflows and adaptive policy recommendations driven by ML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-human identity as a first-class concern&lt;/strong&gt; — As machine identities proliferate across Kubernetes, CI/CD, and agentic AI systems, platforms without strong NHI coverage will fall short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets security integration becomes standard&lt;/strong&gt; — Detection of exposed credentials is moving from a specialized function to an expected orchestration layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decentralized and verifiable identity&lt;/strong&gt; — New cross-organization federation patterns without centralized identity stores.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you're currently deploying identity orchestration workflows, secure the credentials that flow through them. &lt;a href="https://www.gitguardian.com/book-a-demo?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Book a demo of GitGuardian&lt;/a&gt; to see how our platform fits into your identity security strategy.&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
      <category>programming</category>
    </item>
    <item>
      <title>API Keys Security &amp; Secrets Management Best Practices</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Mon, 11 May 2026 12:39:03 +0000</pubDate>
      <link>https://dev.to/gitguardian/api-keys-security-secrets-management-best-practices-4j3f</link>
      <guid>https://dev.to/gitguardian/api-keys-security-secrets-management-best-practices-4j3f</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Master API key management best practices by never storing unencrypted secrets in git, enforcing automated secrets scanning, and avoiding plaintext sharing in messaging systems. Use dedicated secrets management tools, apply least privilege and short-lived keys, and implement robust rotation and monitoring strategies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have compiled a list of some of the best practices to prevent API key leakage and keep secrets and credentials safe. Secrets management doesn't have a one-size-fits-all approach, so this list considers multiple perspectives so you can be informed in deciding to or not to implement strategies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/da8kiytlc/image/upload/v1592031041/Cheatsheets/secrets_cheatsheet_bedizg.pdf?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Download the cheat sheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/da8kiytlc/image/upload/v1592031041/Cheatsheets/secrets_cheatsheet_bedizg.pdf?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fple62nfcve9l4f791hry.jpeg" alt="Secrets management cheat sheet" width="553" height="386"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Never store unencrypted secrets in .git repositories
&lt;/h1&gt;

&lt;p&gt;It is common to wrongly assume that private repositories are secure vaults that are safe places to store secrets. &lt;a href="https://www.gitguardian.com/glossary/sdlc-sast?ref=blog.gitguardian.com#1" rel="noopener noreferrer"&gt;Private repositories are not appropriate places to store secrets&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Private repositories are high-value targets for bad actors because it is common practice to store secrets within them. In addition, .git is designed to sprawl. Repositories get cloned onto new machines, forked into new projects and new developers regularly enter and exit a project with access to complete history. Any hard-coded secrets that exist within a private repository's history will exist in all new repositories born from that source.&lt;/p&gt;

&lt;p&gt;If a &lt;a href="https://www.gitguardian.com/glossary/secret-sprawl-definition?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;secret&lt;/a&gt; enters a repository, private or public, then it should be considered compromised.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A secret in a private repo is like a password written on a $20 bill, you might trust the person you gave it to, but that bill can end up in hundreds of peoples hands as a part of multiple transactions and within multiple cash registers.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If already committed and want to remove an API key from the git history, see: &lt;a href="https://blog.gitguardian.com/rewriting-git-history-cheatsheet/" rel="noopener noreferrer"&gt;Git Clean, Git Remove file from commit - Cheatsheet&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid &lt;code&gt;git add *&lt;/code&gt; commands on git
&lt;/h2&gt;

&lt;p&gt;Using wildcard commands like &lt;code&gt;git add *&lt;/code&gt; or &lt;code&gt;git add .&lt;/code&gt; can easily capture files that should not enter a git repository. This includes generated files, config files, and temporary source code. When making a commit, you should preferably add each file by name and use &lt;code&gt;git status&lt;/code&gt; to list tracked and untracked files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Complete control and visibility over what files are committed. Reduces the risk of unwanted files entering source control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; Takes additional time when making a commit. Can mistakenly miss files when committing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;TIP: Committing early and committing often will not only help navigate file history and break up otherwise large tasks, in addition it will reduce the temptation to use wildcard commands.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Add sensitive files in .gitignore
&lt;/h2&gt;

&lt;p&gt;To prevent sensitive files from ending up within git repositories a comprehensive &lt;code&gt;.gitignore&lt;/code&gt; file should be included with all repositories and include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files with environment variables like &lt;code&gt;.env&lt;/code&gt; or configuration files like &lt;code&gt;.zshrc&lt;/code&gt;, &lt;code&gt;application.properties&lt;/code&gt; or &lt;code&gt;.config&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Files generated by another process (such as application logs or checkpoints, unit tests/coverage reports)&lt;/li&gt;
&lt;li&gt;Files containing "real" data (other than test data) like database extracts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub published a collection of useful &lt;a href="https://github.com/github/gitignore?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;.gitignore templates&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't rely on code reviews to discover secrets
&lt;/h2&gt;

&lt;p&gt;It is extremely important to understand that &lt;a href="https://www.gitguardian.com/glossary/how-to-detect-secrets-in-source-code?ref=blog.gitguardian.com#2" rel="noopener noreferrer"&gt;code reviews will not always detect hard-coded secrets&lt;/a&gt;, especially if they are hidden in previous versions of code. Reviewers are only concerned with the difference between the current and proposed states of the code; they do not consider the entire history of the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tq493ah5ru8fwpl55cb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tq493ah5ru8fwpl55cb.png" alt="Why a code review won't detect a deleted API key" width="615" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If secrets are committed to a development branch and later removed, these secrets won't be visible or of importance to the reviewer. The nature of git means that if a secret gets &lt;a href="https://blog.gitguardian.com/secrets-credentials-api-git/" rel="noopener noreferrer"&gt;overlooked in history&lt;/a&gt; it is exposed forever.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;TIP: As a rule, automation should be implemented wherever predefined rules can be established, like secrets detection. Human reviews should be left to check code for errors that cannot be easily predefined, such as logic.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Use automated secrets scanning on repositories
&lt;/h2&gt;

&lt;p&gt;Even when all best practices are followed, mistakes are common. &lt;a href="https://gitguardian.com/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian&lt;/a&gt; offers a free &lt;a href="https://www.gitguardian.com/glossary/how-to-detect-secrets-in-source-code?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;secrets scanning solution&lt;/a&gt; for developers to detect &lt;a href="https://www.gitguardian.com/detectors?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;both generic API keys and specific secrets&lt;/a&gt; (more than 450 providers are supported!), installable &lt;strong&gt;both on private and public repositories&lt;/strong&gt; for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visibility is the key to great secret management. If you don't know you have a problem, you cannot take action to fix it.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Don't share your secrets unencrypted in messaging systems like Slack
&lt;/h1&gt;

&lt;p&gt;A common secret sprawl enabler is sending secrets in plain text over messaging services. These systems are high-value targets for attackers. It only takes one compromised email or Slack account to uncover a trove of sensitive information, &lt;a href="https://blog.gitguardian.com/looking-beyond-code-for-secrets-leaks/" rel="noopener noreferrer"&gt;as secrets exposure extends beyond source code&lt;/a&gt; into various communication and collaboration tools.&lt;/p&gt;




&lt;h1&gt;
  
  
  Store secrets safely
&lt;/h1&gt;

&lt;p&gt;There is no silver bullet solution for secrets management. Different factors such as project size, team geography, and project scope, must be considered. Multiple solutions may need to coexist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use encryption to store secrets within .git repositories
&lt;/h2&gt;

&lt;p&gt;Encrypting your secrets using tools such as &lt;a href="https://git-secret.io/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;git secret&lt;/a&gt; or &lt;a href="https://blog.gitguardian.com/a-comprehensive-guide-to-sops/" rel="noopener noreferrer"&gt;SOPS&lt;/a&gt; and storing them within a git repository keeps secrets synced across teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Your secrets are synced. &lt;strong&gt;Disadvantages:&lt;/strong&gt; You have to deal with your encryption keys securely. No audit logs. No RBAC. Hard to rotate access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use local environment variables when feasible
&lt;/h2&gt;

&lt;p&gt;An environment variable is a dynamic object whose value is set outside of the application. This makes them easier to rotate without having to make changes within the application itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Easy to change between deployed versions without changing any code. Less likely to be checked into the repository. Simple and clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; May not be feasible at scale when working in teams — no easy way to keep developers, applications, and infrastructure in sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Secrets Management Tools
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.gitguardian.com/top-secrets-management-tools-for-2024/" rel="noopener noreferrer"&gt;Secrets management systems&lt;/a&gt; such as &lt;a href="https://www.vaultproject.io/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Hashicorp Vault&lt;/a&gt; or &lt;a href="https://aws.amazon.com/kms/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;AWS Key Management Service&lt;/a&gt; are encrypted systems that can safely store your secrets and tightly control access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Prevents secrets from sprawling. Provides audit logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; Must be hosted on highly-available and secure infrastructure. Requires codebase changes to integrate. Access keys must be carefully protected.&lt;/p&gt;




&lt;h1&gt;
  
  
  Restrict API access and permissions
&lt;/h1&gt;

&lt;p&gt;By restricting the access and permissions of the API key you not only limit damage and restrict lateral movement but also provide greater visibility over when the API key is being used outside of its scope.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 This idea can be pushed even further by using API keys as a decoy to intercept hackers — a concept called a &lt;a href="https://blog.gitguardian.com/honeytokens-protect-your-holy-grail/" rel="noopener noreferrer"&gt;honeytoken&lt;/a&gt;. Learn more about the &lt;a href="https://blog.gitguardian.com/gitguardian-honeytoken/" rel="noopener noreferrer"&gt;Honeytoken module&lt;/a&gt; in GitGuardian.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Default to minimal permission scope for APIs
&lt;/h2&gt;

&lt;p&gt;Make sure the permissions of that API match the task it is fulfilling. Have separate APIs for read-only and read/write permissions to avoid &lt;a href="https://blog.gitguardian.com/secrets-analyzer/" rel="noopener noreferrer"&gt;overprivileged secrets&lt;/a&gt;. It is common for developers to use &lt;strong&gt;API keys with excessive permissions&lt;/strong&gt; — this increases the potential damage of a data breach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Whitelist IP addresses where appropriate
&lt;/h2&gt;

&lt;p&gt;IP whitelisting provides an additional layer of security by providing a whitelist of IP addresses from your private network so external services only accept requests from trusted sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Limited requests to select trusted sources. &lt;strong&gt;Disadvantages:&lt;/strong&gt; Not always feasible. Can prevent legitimate requests. Needs constant maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use short-lived secrets
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;By using short-lived secrets, the risk of undetected leaked API keys is mitigated&lt;/strong&gt;, ensuring that even if an attacker gains access to a secret, it would be harmless, unlike &lt;a href="https://blog.gitguardian.com/why-exposed-secrets-stay-valid/" rel="noopener noreferrer"&gt;most exposed secrets that remain valid&lt;/a&gt; for extended periods.&lt;/p&gt;

&lt;p&gt;Revoke and rotate all API keys often to prevent &lt;a href="https://blog.gitguardian.com/zombie-leaks/" rel="noopener noreferrer"&gt;unrevoked secrets from lurking&lt;/a&gt; in your systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Imagine you own a company with hundreds of employees that all have keys to your office — keys will inevitably get lost, employees will leave, new keys will get cut and you will soon lose visibility over where each key is. It would be widely considered good practice to change the locks from time to time.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Advanced API Key Storage and Cryptographic Protection
&lt;/h1&gt;

&lt;p&gt;Enterprise API key management demands sophisticated storage mechanisms with cryptographic protection layers. Single-purpose keys are a fundamental principle — use dedicated keys for encryption versus authentication to prevent cryptographic side effects.&lt;/p&gt;

&lt;p&gt;For applications requiring local key storage, implement Hardware Security Modules (HSMs) or secure enclaves. When HSMs aren't feasible, use secure key generation through cryptographically secure random number generators. Consider key derivation strategies where multiple API keys derive from a single master key using strong secret diversification methods.&lt;/p&gt;

&lt;h1&gt;
  
  
  API Key Monitoring and Anomaly Detection
&lt;/h1&gt;

&lt;p&gt;Implement monitoring systems that track API key usage patterns — request frequency, geographic distribution, and accessed resources — to establish baseline behaviors. Deploy alerting for suspicious activities such as unusual request volumes, unexpected IP ranges, or attempts to access resources outside normal scope.&lt;/p&gt;

&lt;p&gt;Establish audit trails capturing successful API calls, failed authentication attempts, permission escalations, and administrative changes. Integrate with SIEM systems to enable real-time threat detection and automated response workflows.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Managing and storing secrets is a challenge that requires vigilance from even the most experienced developer. There is no perfect checklist that a developer can follow.&lt;/p&gt;

&lt;p&gt;Policies, tools, and strategies will differ from project to project, but it is crucial for developers to understand the consequences of their choices so that secrets management can be an informed, active strategy throughout the entire development process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary: Best Practices for API Key and Credentials Security
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never store unencrypted secrets in .git repositories&lt;/strong&gt; — avoid wildcard git add, use .gitignore, use automated scanning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't share secrets unencrypted in messaging systems like Slack&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store secrets safely&lt;/strong&gt; — use encryption, environment variables, or secrets-as-a-service solutions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restrict API keys access and permissions&lt;/strong&gt; — minimal scope, IP whitelisting, short-lived secrets&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Ready to find out which secrets management approach is right for you? Take the &lt;a href="https://www.gitguardian.com/secrets-management-guide?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian Secrets Management Needs Quiz&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What are the most critical API key management best practices for large development teams?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Core best practices include avoiding unencrypted secrets in Git repositories, enforcing automated secrets scanning, and applying least-privilege policies to all keys. Regular key rotation, centralized secrets management, and encryption of all credentials both at rest and in transit are essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How should organizations approach API key rotation and lifecycle management?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Automate rotation schedules based on privilege and risk: rotate high-privilege keys weekly or daily, and rotate low-privilege keys monthly. If any key in a rotation chain is compromised, revoke all related keys immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is relying solely on code reviews insufficient for detecting hard-coded secrets?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Code reviews typically cover only recent changes and may overlook secrets committed previously and later removed. These secrets persist in repository history and remain exploitable. Automated secrets scanning provides comprehensive coverage across current code and historical commits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What advanced storage options are recommended beyond environment variables?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Robust alternatives include dedicated secrets managers (e.g., HashiCorp Vault, AWS Secrets Manager), Hardware Security Modules (HSMs), and secure enclaves offering cryptographic protection, granular permissioning, and automated rotation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can organizations monitor API key usage and detect anomalies?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Monitor request volume, originating IP addresses, time-of-day patterns, and resource access behavior. Configure alerts for unusual activity and forward logs to SIEM platforms for real-time analytics and automated incident response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the risks of sharing secrets in messaging platforms like Slack?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sharing secrets in plaintext on messaging platforms exposes them if accounts are compromised. Attackers can exploit these credentials for lateral movement or privilege escalation. Always use dedicated secrets management tools to share sensitive information securely.&lt;/p&gt;

</description>
      <category>security</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>devops</category>
    </item>
    <item>
      <title>Local Guardrails for Secrets Security in the Age of AI Coding Assistants</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Fri, 08 May 2026 13:01:13 +0000</pubDate>
      <link>https://dev.to/gitguardian/local-guardrails-for-secrets-security-in-the-age-of-ai-coding-assistants-3jc8</link>
      <guid>https://dev.to/gitguardian/local-guardrails-for-secrets-security-in-the-age-of-ai-coding-assistants-3jc8</guid>
      <description>&lt;p&gt;Software supply chain security used to feel like a problem that lived somewhere else.&lt;/p&gt;

&lt;p&gt;The repository and build system were top of mind. Package registries, continuous integration and continuous delivery pipelines, release automation, cloud platforms, and artifact stores also became the focus of concern. These still matter and need protection, but the attack surface has shifted closer to where developers work every day.&lt;/p&gt;

&lt;p&gt;The developer laptop is no longer just the place where code gets written. It is part of the supply chain.&lt;/p&gt;

&lt;p&gt;The security implications are easy to underestimate. A modern workstation touches source code, package managers, cloud accounts, registry tokens, secure shell keys, service accounts, build scripts, artificial intelligence coding assistants, terminals, local caches, and environment files. It is where credentials are created, copied, tested, logged, and too often forgotten.&lt;/p&gt;

&lt;p&gt;Attackers understand this. They are not only looking for a vulnerable production service or a poisoned build step. They are looking for the access material that lets one system trust another.&lt;/p&gt;

&lt;p&gt;We have to update our defense models. Security cannot wait until code reaches a remote repository or a pipeline. By then, a credential may already be in Git history, a model prompt, a local log, a build artifact, or a package install script's reach.&lt;/p&gt;

&lt;p&gt;The control point has to move earlier in the software creation process.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Common Thread Is Credential Theft
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.gitguardian.com/tag/breach-explained/" rel="noopener noreferrer"&gt;GitGuardian's recent breach research&lt;/a&gt; points to a clear pattern across software supply chain attacks: attackers increasingly target the credentials embedded in developer workflows.&lt;/p&gt;

&lt;p&gt;In April 2026, we analyzed three supply chain campaigns that affected &lt;a href="https://blog.gitguardian.com/three-supply-chain-campaigns-hit-npm-pypi-and-docker-hub-in-48-hours/" rel="noopener noreferrer"&gt;npm, PyPI, and Docker Hub over a 48-hour period&lt;/a&gt;. The ecosystems and techniques varied, but the goal was consistent. Each campaign focused on stealing useful credentials from developer environments or continuous integration and delivery pipelines.&lt;/p&gt;

&lt;p&gt;One compromised npm package used a postinstall hook to steal npm publish tokens, then used that access to publish infected versions of packages the victim could reach. A PyPI campaign harvested secure shell keys, cloud credentials, environment variables, and crypto wallets. Across those campaigns, the attacker's objective was clearly to collect valid access and use it to reach the next system.&lt;/p&gt;

&lt;p&gt;This is what makes the problem so damaging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developers Are Attractive Targets
&lt;/h3&gt;

&lt;p&gt;A developer may have access to source control, cloud accounts, package registries, artifact stores, staging environments, incident tools, and internal application programming interfaces. A build runner may hold deployment credentials, package publishing tokens, and access to production-adjacent infrastructure. One exposed token can become a bridge across several layers of the delivery process.&lt;/p&gt;

&lt;p&gt;That is why credential exposure is different from many other bugs. An attacker does not always need to exploit a software flaw, maintain persistence, or modify production code. Sometimes, authenticated access is enough. Sometimes, a short-lived foothold on a developer machine can uncover a credential with broader reach.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/state-of-secrets-sprawl-report-2026?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;The GitGuardian 2026 State of Secrets Sprawl report&lt;/a&gt; makes the scale of the situation clear. We found over 28.6 million new secrets detected in public GitHub commits in 2025, a 34 percent year-over-year increase. Internal repositories are roughly six times more likely than public repositories to contain hardcoded credentials. About 28% of incidents originate entirely outside repositories, in collaboration systems such as Slack, Jira, and Confluence.&lt;/p&gt;

&lt;p&gt;The repository is no longer the boundary. If a secret can be found on the machine in plaintext, it is likely to spread elsewhere in plaintext and be usable by anyone who finds it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Workstation Now Holds Too Much Context To Ignore
&lt;/h2&gt;

&lt;p&gt;Developer laptops are attractive because they contain context.&lt;/p&gt;

&lt;p&gt;They hold source trees, dotfiles, shell history, local environment files, integrated development environment settings, package manager configuration, build artifacts, terminal output, AI agent logs, and temporary debugging notes. Many of these files are invisible during normal review. Many never leave the machine. Some sit in directories that developers rarely inspect.&lt;/p&gt;

&lt;p&gt;That makes local exposure difficult to manage with repository-only controls.&lt;/p&gt;

&lt;p&gt;A credential can appear in a &lt;code&gt;.env&lt;/code&gt; file, get printed into terminal history, land inside a test config, show up in build output, or be copied into an AI prompt during troubleshooting. None of that requires a malicious commit. None of it necessarily triggers a centralized scanner. Yet each moment can create real access risk.&lt;/p&gt;

&lt;p&gt;We need, as an industry, to scan the places where credentials are collected outside Git. Project workspaces, dotfiles, build output, and agent folders can all store copied tokens, configuration blocks, troubleshooting output, and cached context. Attackers harvest this local data because it can lead directly to valid access.&lt;/p&gt;

&lt;p&gt;The Shai-Hulud data gives that concern weight. Across &lt;a href="https://blog.gitguardian.com/honeytokens-on-the-developer-workstation/" rel="noopener noreferrer"&gt;6,943 compromised machines, it found 33,185 unique credentials&lt;/a&gt;, with at least 3,760 still valid when first checked. That is not a theoretical workstation problem. It is a practical attacker workflow.&lt;/p&gt;

&lt;p&gt;Compromise the machine. Search the context. Extract the access. Move on.&lt;/p&gt;

&lt;p&gt;The workstation has become a security boundary because so many tools assume the local environment is trusted. Package managers run install scripts. Extensions read project files. Terminals expose environment variables. Local automation touches real systems. AI agents can read files, run commands, and summarize outputs.&lt;/p&gt;

&lt;p&gt;Each of those actions may be useful, but each can also become a path for accidental exposure or malicious instruction.&lt;/p&gt;

&lt;p&gt;AI-assisted development adds a newer layer to the same problem. AI coding tools now work closer to the developer's files, terminal, editor, and environment variables. A prompt can contain a credential. A tool can call and read a sensitive file. A generated command can print access material into logs or model context. An agent can combine harmless-looking steps into a risky action.&lt;/p&gt;

&lt;p&gt;The exposure surface is no longer just human typing plus code review. It now includes the interaction between humans, local tools, automated agents, and external services. And as we found in our report, more people are using coding assistants, and many of them that do let the agent &lt;a href="https://www.gitguardian.com/state-of-secrets-sprawl-report-2026?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;co-author their commits are leaking twice as many secrets per commit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Security controls have to meet the workflow where it actually happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Earlier Checkpoints Reduce Damage
&lt;/h2&gt;

&lt;p&gt;Traditional supply chain controls still matter. Teams still need source control protections, dependency scanning, secure continuous integration and delivery, artifact integrity, release controls, and production deployment guardrails.&lt;/p&gt;

&lt;p&gt;But those controls often fire after the risky moment has already happened.&lt;/p&gt;

&lt;p&gt;A developer may have created a local file with a credential. An AI assistant may have received sensitive context. A package install script may have read environment variables. A token may have entered local Git history before it ever reaches a remote repository.&lt;/p&gt;

&lt;p&gt;Rotating a credential after it reaches a shared repository can become a full incident response exercise. Someone has to identify ownership, revoke the credential, issue a replacement, check usage, test dependent applications, review access, clean history where possible, and document the event. That work is necessary, but it is expensive.&lt;/p&gt;

&lt;p&gt;Catching the same issue while the developer is still editing a file is simpler. Remove it. Replace it with a safe reference. Keep moving.&lt;/p&gt;

&lt;p&gt;The strongest model treats credential detection as a continuous developer-side control, not an occasional cleanup task. The tool has to sit where developers already work: in the editor, in Git hooks, in the terminal, and inside AI coding workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protecting Your Developers' Secrets
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/gitguardian/ggshield?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;ggshield is the GitGuardian CLI&lt;/a&gt; for scanning developer workflows. You can run ggshield locally or in continuous integration environments, where it provides guardrails across the software development lifecycle and detects hundreds of types of hardcoded credentials.&lt;/p&gt;

&lt;p&gt;A local scan catches problems before code moves into shared infrastructure. A continuous integration scan catches problems after code leaves the laptop. A pre-receive hook can prevent a secret from being pushed to a shared repo or system. Using the same tooling across these points gives teams consistency without forcing developers into a separate security process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git Hooks Add Another Layer Of Protection
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.gitguardian.com/ggshield-docs/integrations/git-hooks/pre-commit?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Using ggshield pre-commit hooks&lt;/a&gt; means a scan runs before Git creates a commit. Teams can configure it through the pre-commit framework, install it locally for specific repositories, or install it globally across current and future repositories on a developer workstation.&lt;/p&gt;

&lt;p&gt;The global option is important. Not every leak happens in the main codebase. Temporary repositories, test folders, side projects, cloned examples, and one-off experiments all create exposure. A repository-by-repository rollout leaves gaps. A global hook gives the developer machine a broader default.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.gitguardian.com/ggshield-docs/integrations/git-hooks/pre-push?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;A pre-push hook&lt;/a&gt; catches a later moment. It runs before code leaves the machine for a remote repository. GitGuardian documents local, framework-based, and global installation modes for this control as well. Together, pre-commit and pre-push hooks create two useful gates: one before local history becomes durable, and one before code reaches shared infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding Secrets On Save
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://blog.gitguardian.com/visual-studio-code-extension/" rel="noopener noreferrer"&gt;GitGuardian's VS Code extension&lt;/a&gt; uses the bundled ggshield CLI to scan code as developers write or modify it. A scan is run automatically on saving a file. Findings are shown instantly and directly inside the editor through code annotations, status bar warnings, and the Problems panel. This extension also works with Cursor, Antigravity, and Windsurf.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl2cvclb1qkikvqcfbzv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl2cvclb1qkikvqcfbzv.png" alt="GitGuardian VS Code Extension in action" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security controls fail when they are too late, too noisy, or too far away from the mistake. A good local control gives feedback in context. It explains what happened. It helps the developer fix the issue before it becomes a ticket, a broken build, or an incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Tools Need Guardrails At The Handoff Points
&lt;/h2&gt;

&lt;p&gt;AI coding tools deserve special attention because they change where leakage can occur.&lt;/p&gt;

&lt;p&gt;An AI workflow may expose sensitive material before code exists as a file. A developer might paste a credential into a prompt while debugging. An agent might read a local configuration file. A tool call might execute a command that prints environment variables. Output from that command might then move into the model context or local logs.&lt;/p&gt;

&lt;p&gt;That is a different path than traditional source code leakage.&lt;/p&gt;

&lt;p&gt;GitGuardian's AI coding tools integration addresses this by placing controls inside the hook systems of tools such as Cursor, Claude Code, and VS Code with GitHub Copilot. The integration scans three stages: prompt submission, pre-tool use, and post-tool use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7j328sa8yrbycod7tkt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7j328sa8yrbycod7tkt.png" alt="GitGuardian AI hooks in action" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prompt submission scanning checks content before it reaches the model and blocks the prompt when credentials are found. Pre-tool use scanning checks commands, file reads, and Model Context Protocol calls before execution, blocking risky actions before they run. Post-tool use scanning checks outputs after execution and sends a desktop notification when credentials appear.&lt;/p&gt;

&lt;p&gt;That structure fits how agentic tools operate.&lt;/p&gt;

&lt;p&gt;The risky moment may be a prompt. It may be a file read. It may be a shell command. It may be the output of a tool the developer did not manually inspect. A repository-only control sees too little of this flow. A hook inside the AI workflow can stop exposure at the handoff point.&lt;/p&gt;

&lt;p&gt;The editor catches the issue while the developer writes. AI hooks catch sensitive material before prompts, tool calls, or outputs move it somewhere risky. Git hooks catch credentials before they enter commit history or leave the laptop. Continuous integration and server-side controls provide backup once code reaches shared systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layered Prevention Without Forcing A Separate Workflow
&lt;/h2&gt;

&lt;p&gt;Developer environments are now connected, automated, and increasingly assisted by tools that can act on local context. Security has to account for that reality. Waiting for a remote scan is too late for credential exposure.&lt;/p&gt;

&lt;p&gt;The better model is straightforward: find credentials earlier, block them closer to where they appear, and reduce the chance that a developer's laptop becomes the easiest path into the software supply chain.&lt;/p&gt;

&lt;p&gt;GitGuardian's ggshield, IDE extensions, AI hooks, and Git hooks all point toward that model. They bring detection into the places developers already use, rather than asking developers to leave their workflow for security. They reduce the time between mistakes and feedback. They give teams a consistent detection engine across local development, AI-assisted coding, Git workflows, and automation.&lt;/p&gt;

&lt;p&gt;The supply chain now includes the workstation.&lt;/p&gt;

&lt;p&gt;Treat it that way.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>devsecops</category>
      <category>devops</category>
    </item>
    <item>
      <title>Git Clean, Git Remove file from commit - Cheatsheet</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Thu, 07 May 2026 13:07:34 +0000</pubDate>
      <link>https://dev.to/gitguardian/git-clean-git-remove-file-from-commit-cheatsheet-3ola</link>
      <guid>https://dev.to/gitguardian/git-clean-git-remove-file-from-commit-cheatsheet-3ola</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Learn how to remove files from git commits, whether staged, recent, or deep in history, to eliminate exposed secrets and sensitive data. This guide covers safe removal techniques, advanced history rewriting with git-filter-repo, and critical security steps like credential revocation. Understand the risks of incomplete cleanup and why automated secrets detection and pre-commit scanning are essential for robust codebase security.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Learn how to safely remove confidential information from your git repository. Whether you need to excise an entire file or edit a file without removing it, this tutorial will guide you through the process. Plus, get tips on preventing future headaches with GitGuardian!&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;p&gt;You know that &lt;a href="https://blog.gitguardian.com/secrets-credentials-api-git/" rel="noopener noreferrer"&gt;adding secrets to your git repository&lt;/a&gt; (even a private one) is a bad idea, because doing so &lt;strong&gt;risks exposing confidential information to the world&lt;/strong&gt;. But mistakes were made, and now you need to figure out how to excise confidential information from your repo. &lt;strong&gt;Because git keeps a history of &lt;em&gt;everything&lt;/em&gt;, it's not often enough to simply remove the secret or file, commit, and push&lt;/strong&gt;: we might need to do a bit of deep cleaning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thankfully, for simpler cases, git provides commands that make cleaning things up easy&lt;/strong&gt;. And in more complicated cases, we can use git-filter-repo, a tool recommended by the core git developers for deep cleaning an entire repository.&lt;/p&gt;

&lt;p&gt;First and foremost, if there is reason to think that the secret has escaped into the world, and you can &lt;a href="https://blog.gitguardian.com/what-to-do-if-you-expose-a-secret/" rel="noopener noreferrer"&gt;revoke the secret&lt;/a&gt;, do so. How to revoke a secret is going to vary quite a lot depending on what the secret protects. If you don't know how to revoke it, you will need help from the owner of the resource protected by the secret.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Need to quickly see what scenario applies to you? Check out our cheatsheet flow chart below.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/da8kiytlc/image/upload/v1611932656/Cheatsheets/RewritingYourGitHistory-Cheatsheet-Final_weq1l2.pdf?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vtxwdb82ib6f0vzrkz6.png" alt="Git history rewriting cheatsheet flowchart" width="500" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/da8kiytlc/image/upload/v1611932656/Cheatsheets/RewritingYourGitHistory-Cheatsheet-Final_weq1l2.pdf?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Download the git history cheatsheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's consider different scenarios to see how to clean things up.&lt;/p&gt;

&lt;h1&gt;
  
  
  Have you pushed your work up yet?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  NO
&lt;/h2&gt;

&lt;p&gt;No? That's great. Please don't push it up just yet. If you have any uncommited work, we can use &lt;code&gt;git stash&lt;/code&gt; to save it. This sets your work aside in a temporary "stash" so that we can work with the git repository without losing anything you haven't committed yet. When we're done cleaning things up, you can use &lt;code&gt;git stash pop&lt;/code&gt; to restore your work.&lt;/p&gt;

&lt;h2&gt;
  
  
  YES
&lt;/h2&gt;

&lt;p&gt;If you have already pushed a commit containing a secret, or just discovered a secret in your existing history, things get more complicated if there are other people working on this branch. If you work alone, there's nothing to do at this point, you can skip to the next step. If you work as part of a team, things get more complicated because we need everyone to act in a coordinated way.&lt;/p&gt;

&lt;p&gt;First of all, we need to determine who else is affected by the secret's presence, because we'll need to coordinate everyone's actions. If the secret only appears in the branch you're working on, you only need to coordinate with anyone else who is always working off of that branch. However, if you found the secret lurking further back in git history, perhaps in your &lt;code&gt;master&lt;/code&gt; or &lt;code&gt;main&lt;/code&gt; branch, you'll need to coordinate with everyone working in the repository.&lt;/p&gt;

&lt;p&gt;Let the others affected know that a secret was found that needs to be excised from everyone's git history. When you edit the git history to remove a file, it can cause problems with your teammates' local clones; moreover, they can end up re-inserting the secret back into the public repository when they push their work. So it is important that everyone affected is in sync for the excision to work. This means that everyone needs to stop what they are doing, close outstanding PRs, and push up work that's in progress.&lt;/p&gt;

&lt;p&gt;Now, let's make a fresh clone.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete your existing clone in its entirety.&lt;/li&gt;
&lt;li&gt;Make a fresh clone with &lt;code&gt;git clone [repository URL]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Change into the project directory with &lt;code&gt;cd [project name]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Download the entire repository history: &lt;code&gt;git pull --all --tags&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last step will look a little bit familiar. &lt;code&gt;git pull&lt;/code&gt; tells git to grab updates from the remote repository, and apply them in the current branch (when it makes sense to do so, that is, when the local branch is set to track a remote branch). But git is smart, it doesn't pull everything down, only what's needed. This is where the &lt;code&gt;--all&lt;/code&gt; flag comes in. This flag tells git to grab every branch from the remote repository. And the &lt;code&gt;--tags&lt;/code&gt; flag tells git to grab every tag as well. So this command tells git to download the entire repository history, a complete and total clone. We have to do this, because it is possible that the commit containing the secret exists in more than one branch or tag. We need to ensure we don't just scrub our secret from a portion of the repository history. As a result, this command can take a very long time, if the repository is very large.&lt;/p&gt;

&lt;p&gt;Move on to the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Remove File from Commit: Understanding the Difference Between Staged and Committed Files
&lt;/h2&gt;

&lt;p&gt;Before diving into file removal techniques, it's crucial to understand the distinction between staged and committed files in Git's workflow. When you execute git add, files move to the staging area (index), but they're not yet part of the repository history. Once you run git commit, these staged changes become part of a commit object with a unique SHA hash.&lt;/p&gt;

&lt;p&gt;This distinction is critical when you need to remove file from git commit because the approach varies significantly. For staged files that haven't been committed yet, simple commands like &lt;code&gt;git reset HEAD &amp;lt;filename&amp;gt;&lt;/code&gt; or the newer &lt;code&gt;git restore --staged &amp;lt;filename&amp;gt;&lt;/code&gt; will unstage the file without affecting your working directory. However, once files are committed, you're dealing with Git's immutable history, requiring more sophisticated techniques like &lt;code&gt;git reset --soft HEAD~1&lt;/code&gt; followed by selective staging, or &lt;code&gt;git commit --amend&lt;/code&gt; for the most recent commit.&lt;/p&gt;

&lt;p&gt;Understanding this workflow prevents common mistakes where developers accidentally delete files from their working directory when they only intended to remove them from a commit. Always verify your Git status with &lt;code&gt;git status&lt;/code&gt; before executing removal commands to ensure you're targeting the correct state.&lt;/p&gt;

&lt;h1&gt;
  
  
  How complicated is the situation?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The secret is in the last commit, and there's nothing else in the last commit
&lt;/h2&gt;

&lt;p&gt;In this case, we can drop the last commit in its entirety. We do this with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reset --hard HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What does this command do? Let's break it apart a little bit. &lt;code&gt;git reset&lt;/code&gt; is how we tell git that we want to undo recent changes. Normally, this command by itself tells git to unstage anything we've added with &lt;code&gt;git add&lt;/code&gt;, but haven't committed yet. This version of resetting isn't sufficient for our purposes. But &lt;code&gt;git reset&lt;/code&gt; is more flexible than that. We can tell git to take us back in time to a previous commit as well. We do that by telling git which commit to rewind to. We can use a commit's identified (it's "SHA"), or we can use an indirect reference. &lt;code&gt;HEAD&lt;/code&gt; is what git calls the most recent commit on the checked out branch. &lt;code&gt;HEAD~1&lt;/code&gt; means "the first commit prior to the most recent" (likewise &lt;code&gt;HEAD~2&lt;/code&gt; means "two commits prior to the most recent").&lt;/p&gt;

&lt;p&gt;Finally, the &lt;code&gt;--hard&lt;/code&gt; tells git to throw away any differences between the current state and the state we're resetting to. If you leave off the &lt;code&gt;--hard&lt;/code&gt; your changes, including the secret, won't be discarded. With &lt;code&gt;--hard&lt;/code&gt;, the differences will be deleted, gone forever (which is precisely what we want!).&lt;/p&gt;

&lt;p&gt;Once you've done a hard reset, that's it! You're done. Your work has been destructively undone, and you can pick back up where you were.&lt;/p&gt;

&lt;h2&gt;
  
  
  The secret is in the last commit, but there were other changes too
&lt;/h2&gt;

&lt;p&gt;In this case, we don't want to completely drop the last commit. We want to edit the last commit instead. Edit your code to remove the secrets, and then add your changes as usual. Then, instead of making a new commit, we'll tell git we want to amend the previous one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add [FILENAME]
git commit --amend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We all know &lt;code&gt;git commit&lt;/code&gt;, but the &lt;code&gt;--amend&lt;/code&gt; flag is our friend here. This tells git that we want to edit the previous commit, rather than creating a new one. We can continue to make changes to the last commit in this way, right up until we're ready to either push our work, or start on a new commit.&lt;/p&gt;

&lt;p&gt;Once you've amended the commit, you're done! The secret's gone, you can carry on as you were.&lt;/p&gt;

&lt;h2&gt;
  
  
  The secret is beyond the last commit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;It's complicated&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you know you committed a secret, but have since committed other changes, things get trickier quickly. In anything but the simplest cases, we are going to want a more powerful tool to help us do a &lt;a href="https://www.gitguardian.com/videos/how-to-permanently-remove-files-from-git-and-rewrite-your-git-history?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;deep clean of the repository&lt;/a&gt;. We're going to use &lt;code&gt;git-filter-repo&lt;/code&gt;, a tool recommended by the git maintainers that will help us to rewrite history in a more user-friendly way than the native git tooling.&lt;/p&gt;

&lt;p&gt;A technical aside to those familiar with the concept of rebasing. (If you don't know what that means, feel free to skip this paragraph.) All of the cases covered below can of course be managed using native git tools, particularly by rebasing. Sometimes rebasing is relatively painless, of course, but in the kinds of scenarios we're presenting here, rebasing is going to be a tedious and deeply error-prone process. This is why I am favoring purpose-built tools like git-filter-repo over rebasing. It is far better to avoid opening the possibility for making mistakes. From my own personal experience, recovering from a botched rebase is extremely time consuming, and often nearly impossible. Better to use the right tool for the job.&lt;/p&gt;

&lt;p&gt;First, install &lt;code&gt;git-filter-repo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next, let's assess the situation to determine which technique is right for your situation. Sometimes secrets are files, and sometimes secrets are lines of code. For example, if you accidentally committed an SSH key or TLS certificate file, these are contained in specialized files that you'll need to excise. On the other hand, maybe you have a single line of code containing an API key that's part of a larger source file. In that case, you want to modify one or more lines of a file without deleting it.&lt;/p&gt;

&lt;p&gt;Git-filter-repo can handle both cases, but requires different syntax for each case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Excise an entire file
&lt;/h2&gt;

&lt;p&gt;To tell &lt;code&gt;git-filter-repo&lt;/code&gt; to excise a file from the git history, we need only a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git filter-repo --use-base-name --path [FILENAME] --invert-paths
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--use-base-name&lt;/code&gt; option tells &lt;code&gt;git-filter-repo&lt;/code&gt; that we are specifying a filename, and not a full path to a file. You can leave off this option if you would rather specify the full path explicitly.&lt;/p&gt;

&lt;p&gt;Normally, &lt;code&gt;git-filter-repo&lt;/code&gt; works by ignoring the filenames specified (they are, as the name suggests, filtered out). But we want the inverse behavior, we want &lt;code&gt;git-filter-repo&lt;/code&gt; to ignore everything except the specified file. So we must pass &lt;code&gt;--invert-paths&lt;/code&gt; to tell it this. If you leave off the &lt;code&gt;--invert-paths&lt;/code&gt;, you'll excise everything except the specified file, which is the exact opposite of what we want, and would likely be disastrous. Please don't do that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edit a file without removing it
&lt;/h3&gt;

&lt;p&gt;If you only need to edit one or more lines in a file without deleting the file, &lt;code&gt;git-filter-repo&lt;/code&gt; takes a sequence of search-and-replace commands (optionally using regular expressions).&lt;/p&gt;

&lt;p&gt;First, identify all the lines containing secrets that need to be excised. You'll also need to work out a plan for how you will replace those lines. Perhaps just deleting them is enough. But perhaps they need to be modified to prevent a runtime crash. Next, create a file containing the search-and-replace commands, called &lt;code&gt;replacements.txt&lt;/code&gt;. Make sure it's in a folder outside of your repo, for example, the parent folder.&lt;/p&gt;

&lt;p&gt;The format of this file is one search-and-replace command per line, using the format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ORIGINAL==&amp;gt;REPLACEMENT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, suppose that you've hard-coded an API token into your code, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUTH_TOKEN='123abc'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now suppose that you've decided that it's better to load the API token from an environment variable, as such:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUTH_TOKEN=ENV['AUTH_TOKEN']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can tell &lt;code&gt;git-filter-repo&lt;/code&gt; to search for the hard-coded token, and replace with the environment variable by adding this line to &lt;code&gt;replacements.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'123abc'==&amp;gt;ENV['AUTH_TOKEN']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have multiple secrets you need to excise, you can have more than one rule like this in &lt;code&gt;replacements.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Finally, assuming you placed &lt;code&gt;replacements.txt&lt;/code&gt; in the parent directory, we invoke &lt;code&gt;git-filter-repo&lt;/code&gt; with our search-and-replace commands like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git filter-repo --replace-text ../replacements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sometimes you might get an error saying you're not working from a clean clone. That's OK. Git-filter-repo is making irreversible changes to your local repository, and it wants to be certain that you have a backup before it does that. Of course, we do have a remote repository, and we're working from a local clone. And of course we are very interested in making irreversible edits to our commit history—we have a secret to purge! So there's no need for &lt;code&gt;git-filter-repo&lt;/code&gt; to worry. We can reassure it that we are OK with making irreversible changes by adding the &lt;code&gt;--force&lt;/code&gt; flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git filter-repo --replace-text ../replacements.txt --force
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now you have a clean git history! You'll want to validate your work by compiling your software or running your test suite. Then once you're satisfied that nothing is broken, move on to the next step to propagate the new history to your remote repository and the rest of the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Scenarios: Removing Files from Multiple Commits
&lt;/h2&gt;

&lt;p&gt;While the current article covers basic scenarios, many developers encounter situations where they need to &lt;strong&gt;git remove files from commit&lt;/strong&gt; across multiple commits in their history. This commonly occurs when sensitive data like API keys or configuration files were committed multiple times before being detected.&lt;/p&gt;

&lt;p&gt;For commits that aren't the most recent, you'll need to use interactive rebase with &lt;code&gt;git rebase -i HEAD~n&lt;/code&gt; where n is the number of commits to review. During the interactive rebase, you can mark commits for editing with &lt;code&gt;edit&lt;/code&gt;, then use &lt;code&gt;git reset HEAD~1&lt;/code&gt; to unstage files from that specific commit, remove the unwanted files, and continue with &lt;code&gt;git rebase --continue&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Alternatively, for more complex scenarios involving the same file across many commits, &lt;code&gt;git filter-repo --path &amp;lt;filename&amp;gt; --invert-paths&lt;/code&gt; provides a more robust solution. This tool rewrites the entire repository history, permanently removing the specified file from all commits. However, this approach requires careful coordination with your team since it fundamentally alters the repository's commit hashes, making it incompatible with existing clones.&lt;/p&gt;

&lt;p&gt;Always create a backup branch before attempting multi-commit file removal: &lt;code&gt;git branch backup-before-cleanup&lt;/code&gt; ensures you can recover if something goes wrong during the history rewriting process.&lt;/p&gt;

&lt;h1&gt;
  
  
  Do you need to coordinate with your team?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  No
&lt;/h2&gt;

&lt;p&gt;If you only just added the secret, and haven't pushed any of your work yet, you're done. Just keep working like you had been, and no one will ever know. Don't forget if you need to restore uncommitted work by popping it from the stash with &lt;code&gt;git stash pop&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Otherwise, we'll need to overwrite what's on your remote git repository (such as GitHub), as it still contains tainted history. We can't simply push, however: The remote repository will refuse to accept our push because we've re-written history. So we'll need to force push instead. Moreover, if our re-writes to history affect multiple branches or tags, we'll need to push them all up. We can accomplish all of this like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push --all --force &amp;amp;&amp;amp; git push --tags --force
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: The &lt;code&gt;--all&lt;/code&gt; argument does not automatically push any updated tags. Git does not allow the push arguments &lt;code&gt;--all&lt;/code&gt; and &lt;code&gt;--tags&lt;/code&gt; to be used in the same call. If you need to run both commands, you can do so with the single line, thanks to the &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  YES
&lt;/h2&gt;

&lt;p&gt;If you work as part of a team, now comes the hard part. Everyone you identified as affected at the beginning of this process still has the old history. They need to synchronize against the revised history you just force-pushed. This is where errors can happen, and more importantly, where frustration can occur.&lt;/p&gt;

&lt;p&gt;Ideally everyone pushed their work up before you edited the history. In that case, everyone can simply make a clean clone of the repo and pick up where they left off.&lt;/p&gt;

&lt;p&gt;But if someone failed to push their work up before you re-wrote history, they're going to find they have a number of conflicts that need to be resolved when they pull. Instead, they need to fetch the new history from the remote repository, and rebase their hard work on the re-written history. To do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git fetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git rebase -i origin/[branchname]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you aren't familiar with &lt;code&gt;git fetch&lt;/code&gt;, this command tells git to download new data from the remote repository, but unlike &lt;code&gt;git pull&lt;/code&gt;, it doesn't attempt to merge new commits into your current working branch. So the fetch here is requesting all the newly re-written history.&lt;/p&gt;

&lt;p&gt;Once all the new history is pulled down, the developer will need to re-apply all their hard work on top of the re-written history. This is done by rebasing. For this reason, rebasing is out of scope for this tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Implications: When File Removal Isn't Enough
&lt;/h2&gt;

&lt;p&gt;From a cybersecurity perspective, simply knowing how to remove a file from git commit is only the first step when dealing with exposed secrets or sensitive data. Even after successful removal from Git history, the sensitive information may have already been exposed through various vectors that require immediate attention.&lt;/p&gt;

&lt;p&gt;If the repository was ever public or accessible to unauthorized users, you must assume the sensitive data has been compromised. This means immediately revoking any exposed credentials, rotating API keys, and updating passwords. Git's distributed nature means that anyone who cloned or forked the repository before your cleanup still has access to the sensitive data in their local copies.&lt;/p&gt;

&lt;p&gt;For organizations using GitGuardian's secrets detection capabilities, the platform can help identify when sensitive data has been exposed and provide guidance on proper remediation steps. This includes not just the technical Git operations, but also the security protocols necessary to minimize damage from the exposure.&lt;/p&gt;

&lt;p&gt;Additionally, consider implementing pre-commit hooks and automated scanning to prevent future incidents. Tools like GitGuardian's &lt;a href="https://docs.gitguardian.com/ggshield-docs/integrations/git-hooks/pre-commit?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;pre-commit hooks&lt;/a&gt; can catch secrets before they enter your repository, eliminating the need for complex history rewriting operations and reducing security risks associated with exposed credentials in version control systems.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;If you've made it this far, congratulations! You've successfully and securely eliminated a secret or file from your git history. But it didn't have to be this way. You can prevent all this headache with GitGuardian.&lt;/p&gt;

&lt;p&gt;GitGuardian is an automated secret detection solution that integrates with your git repos to scan your code for secrets. GitGuardian first makes an initial scan to clean your history, then integrates with your devops pipeline to scan all incremental changes as they arrive and notify you before you have to do complex surgery! Try it out here.&lt;/p&gt;

&lt;p&gt;If you are interested in other cheat sheets about security we have put together these for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to improve your &lt;a href="https://blog.gitguardian.com/how-to-improve-your-docker-containers-security-cheat-sheet/" rel="noopener noreferrer"&gt;Docker containers security&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Best practices for &lt;a href="https://blog.gitguardian.com/secrets-api-management/" rel="noopener noreferrer"&gt;managing and storing secrets including API keys and other credentials&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the safest way to remove a file from a Git commit after it has been pushed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To safely remove a file from a Git commit after pushing, use history-rewriting tools like &lt;code&gt;git filter-repo&lt;/code&gt; to purge the file from all relevant commits. After rewriting history, coordinate with your team and force-push the updated repository. Always revoke any exposed secrets immediately, as removal from Git does not prevent prior exposure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I remove a file from a Git commit if it is only staged and not yet committed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If a file is staged but not committed, use &lt;code&gt;git reset HEAD &amp;lt;filename&amp;gt;&lt;/code&gt; or &lt;code&gt;git restore --staged &amp;lt;filename&amp;gt;&lt;/code&gt; to unstage it. This removes the file from the staging area without affecting your working directory, ensuring it will not be included in the next commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the implications of using git filter-repo to remove files from multiple commits?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;git filter-repo&lt;/code&gt; to remove files from multiple commits rewrites the repository history, changing commit hashes. This requires all collaborators to re-clone or rebase their work on the new history. Always create a backup branch before proceeding and communicate changes to your team to avoid workflow disruptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I remove sensitive data from a single recent commit without losing other changes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To remove sensitive data from the most recent commit without discarding other changes, edit the file to remove the secret, stage the updated file, and run &lt;code&gt;git commit --amend&lt;/code&gt;. This updates the last commit with your modifications, effectively removing the sensitive data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What security steps should be taken after you remove file from git commit containing secrets?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After removing a file from a Git commit that contained secrets, immediately revoke or rotate any exposed credentials. Assume the secret may have been accessed if the repository was public or shared. Implement automated secrets detection and pre-commit hooks to prevent future exposures and ensure compliance with security policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I coordinate with my team when rewriting Git history to remove sensitive files?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before rewriting history, notify all affected team members and ensure they push any outstanding work. After force-pushing the cleaned history, teammates must re-clone the repository or rebase their changes onto the new history. Clear communication and a coordinated process are essential to prevent conflicts and data loss.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is a guest post. Views and opinions expressed in this publication are solely those of the author and do not reflect the official policy, position, or views of GitGuardian.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>security</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Short-Lived Credentials in Agentic Systems: A Practical Trade-off Guide</title>
      <dc:creator>Dwayne McDaniel</dc:creator>
      <pubDate>Thu, 07 May 2026 12:44:19 +0000</pubDate>
      <link>https://dev.to/gitguardian/short-lived-credentials-in-agentic-systems-a-practical-trade-off-guide-569c</link>
      <guid>https://dev.to/gitguardian/short-lived-credentials-in-agentic-systems-a-practical-trade-off-guide-569c</guid>
      <description>&lt;p&gt;Agentic systems need short-lived credentials as a baseline security control. &lt;a href="https://blog.gitguardian.com/ai-agents-authentication-how-autonomous-systems-prove-identity/" rel="noopener noreferrer"&gt;That point is pretty clear&lt;/a&gt;. The harder part is when teams move from architecture diagrams to production systems and discover how much operational machinery underpins that decision.&lt;/p&gt;

&lt;p&gt;Security teams often frame credential lifetime as a clean principle. Short-lived good and long-lived bad. Production systems rarely live inside principles alone. In reality, they live inside retry logic, partial failures, identity providers, cloud platform quirks, third-party APIs, and on-call rotations. All this is made more difficult by the probabilistic nature of AI systems.&lt;/p&gt;

&lt;p&gt;Agents behave differently from traditional services. A narrow service usually connects to a known set of systems and follows a fairly stable path. An agent can work across tools, call external APIs, carry context from one step to the next, and continue work after the original trigger is gone. The runtime path is less predictable, and the permission model has to account for that.&lt;/p&gt;

&lt;p&gt;Authentication is one of the few reliable controls that bounds what an autonomous system can reach, modify, and retain access to over time. In agentic systems, an authentication choice directly shapes blast radius and revocability.&lt;/p&gt;

&lt;h3&gt;
  
  
  The real decision sits inside production friction
&lt;/h3&gt;

&lt;p&gt;Production teams are balancing real constraints. They have to consider token issuance, refresh timing, identity federation, vault availability, third-party APIs, local development, failure recovery, and the cost of debugging expired credentials mid-workflow. That is why the more useful question is "Where does short-lived access materially reduce blast radius, and where does the operational overhead need a more deliberate design?"&lt;/p&gt;

&lt;p&gt;A good answer ties credential lifetime to agent behavior, privilege, and execution model. A mature answer adds continuous secret monitoring on top, because agents still leak credentials, retries still fail, and temporary exceptions have a way of becoming permanent.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Systems, More Context, More Places To Leak Secrets
&lt;/h2&gt;

&lt;p&gt;Agentic systems tend to touch more systems than single-purpose services. They commonly need to authenticate to APIs, SaaS tools, internal platforms, cloud resources, data stores, and orchestration layers. They often carry temporary context, delegated permissions, and state across those steps. That broader surface expands the number of places where a token can escape.&lt;/p&gt;

&lt;p&gt;Credentials can show up in logs, traces, prompts, tool arguments, memory stores, CI pipelines, deployment configs, notebooks, and local test environments. AI-assisted development adds more volume to all of those surfaces. The &lt;a href="https://www.gitguardian.com/state-of-secrets-sprawl-report-2026?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian State of Secrets Sprawl 2026 report showed 28.65 million hardcoded secrets added to public GitHub in 2025&lt;/a&gt;, with leak rates in AI-assisted code running roughly double the broader GitHub baseline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiizd8ii9srts4duqmfkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiizd8ii9srts4duqmfkq.png" alt="Claude Code co-authored commits leak secrets at 2.4x the baseline across all public github commits" width="767" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That data fits the reality that many teams already feel. More generated code means more output to review, more automation artifacts to inspect, and more opportunities for sensitive data to land where it should never have been written in the first place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Standing permissions become more dangerous in autonomous workflows
&lt;/h3&gt;

&lt;p&gt;A long-lived credential attached to an agent carries a different kind of risk than the same credential attached to a predictable service. An agent can retry automatically, call adjacent tools, invent tools, pivot across systems, and continue acting after the original operator has moved on. A shared access token can also blur accountability across agents, environments, or tenants.&lt;/p&gt;

&lt;p&gt;Credentials in an agentic system are standing permissions attached to software that can improvise and are extremely goal-oriented. &lt;a href="https://blog.gitguardian.com/ai-agents-authentication-how-autonomous-systems-prove-identity/" rel="noopener noreferrer"&gt;Authentication defines what an agent can reach&lt;/a&gt;, how long it can keep reaching it, and how quickly a team can shut it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Short-Lived Credentials Actually Buy You
&lt;/h2&gt;

&lt;p&gt;TTL, or time to live, is the maximum period a credential remains valid. Shorter TTL reduces the maximum window of abuse after a leak. That is the core security gain, and it is easy to quantify.&lt;/p&gt;

&lt;p&gt;A static key valid for 90 days stays useful for up to 7,776,000 seconds. A 15-minute token stays useful for 900 seconds. That is an 8,640x reduction in the maximum exposure window.&lt;/p&gt;

&lt;p&gt;That number doesn't erase risk, but it does cap it. An attacker with a short-lived token has less time for lateral movement, repeated calls, persistence, and quiet misuse. Incident responders also benefit because expiry often does containment work even when formal revocation is slow, cached, or inconsistently enforced across systems.&lt;/p&gt;

&lt;p&gt;Having the shortest feasible TTL is critical as breakout times, the time from initial access to lateral movement, have been falling each year. &lt;a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-2026-global-threat-report-findings/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;Breakout times have been witnessed at under a minute in some cases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-2026-global-threat-report-findings/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40ov6szogpyoeid5molo.png" alt="CrowdStrike 2026 Global Threat Report breakout time findings" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Short lifetime matters most when privilege is high
&lt;/h3&gt;

&lt;p&gt;The value of a short TTL rises with privilege, reach, and uncertainty. High-privilege tokens should have the shortest lifetime a system can support reliably. Credentials used across trust boundaries deserve the same discipline. The same goes for tokens accessible to LLM-adjacent components, external tool connectors, or stateful agent memory, &lt;a href="https://www.youtube.com/watch?v=fvYYz87KjqM&amp;amp;ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;where leakage paths are harder to predict&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The unit of issuance matters too. Per-task tokens usually beat agent-global tokens. Per-session delegated access usually beats long-running shared access. Per-agent identity is much easier to audit than a service account reused across every instance in a workflow.&lt;/p&gt;

&lt;p&gt;Short-lived credentials reduce the size of an incident when a token is found and abused. They also improve attribution because each issued credential can be tied to a narrower slice of work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safe TTL Depends on the Kind of Agent
&lt;/h2&gt;

&lt;p&gt;Not all agents are the same, and this needs to be factored into any discussion of access and time-to-live. Here are a few different use cases that all fall under the broad umbrella of "Agentic AI." Note: all TTL suggestions are based on general best practices; only you and your team can make a governance plan that best fits your specific needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive user-facing agents
&lt;/h3&gt;

&lt;p&gt;User-facing copilots, internal assistants, and triage agents acting on behalf of a specific user usually fit best with a 5 to 15-minute TTL. Their access is tied closely to an active session. Silent refresh is often feasible. The security goal should be to quickly remove or reduce access when the user context ends.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background workflow agents
&lt;/h3&gt;

&lt;p&gt;Scheduled document processing, enrichment jobs, and routine operational workflows often need more runtime headroom. A 15 to 60-minute TTL is usually a practical range. These systems still benefit from workload identity and on-demand issuance, but they also need sufficient time to complete routine work without causing unnecessary renewal failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Long-running autonomous agents
&lt;/h3&gt;

&lt;p&gt;Multi-hour orchestration, remediation, and research workflows need a different pattern. A single broad credential that lives for hours creates too much concentrated risk. A better design segments access by stage, tool, or action class. Each step gets the narrowest possible credential for that slice of work. A 1 to 6-hour TTL may be operationally reasonable for some stages, but compartmentalization does more security work than the number alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fallback cases and explicit exceptions
&lt;/h3&gt;

&lt;p&gt;Some third-party dependencies still only support static API keys. Some legacy systems are hard to retrofit. Some refresh paths are fragile enough that teams keep a longer-lived fallback credential in reserve. Those exceptions need strict ownership, narrow scope, review cycles, and strong monitoring. They should sit within an exception process, not within the normal architecture.&lt;/p&gt;

&lt;p&gt;Safe TTL includes scope, issuer trust, revocation path, and observability, not just predicting reasonable reissuance intervals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Dynamic Issuance Gets Hard in Production
&lt;/h2&gt;

&lt;p&gt;Identity and runtime complexity pile up fast, and the operational friction is real. OAuth token exchange flows can be awkward in distributed systems. Workload identity federation varies across cloud providers. Vault and broker systems become important control planes that need their own availability and recovery story.&lt;/p&gt;

&lt;p&gt;Runtime logic adds more complexity. Tokens need caching. Expiry windows need careful handling. Clock drift can create edge cases. A refresh failure in the middle of a workflow can leave behind partial writes, repeated actions, and difficult replay logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer experience shapes the security outcome
&lt;/h3&gt;

&lt;p&gt;Teams also feel this in day-to-day engineering. Local development becomes harder when credentials are minted dynamically. Staging environments need more supporting services. Debugging takes longer when the auth path includes brokers, temporary tokens, and policy evaluation. Application, platform, and security teams all need a shared operating model.&lt;/p&gt;

&lt;p&gt;That pressure explains why static credentials keep showing up. Teams do not choose them because they enjoy the risk. They choose them because dynamic issuance moves a large share of the work into day-two operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brokered and Vaulted Access and Ephemeral Credentials
&lt;/h2&gt;

&lt;p&gt;A healthy pattern is straightforward: the workload proves its identity, and a broker, vault, or cloud identity plane verifies that identity against policy. Only then can the system issue scoped short-lived credentials for a specific task window. When the token expires, the workload has to authenticate again and pass policy again.&lt;/p&gt;

&lt;p&gt;While in general, moving any keys to vaults is a strong first step towards reducing standing credential risk, it should not be the end goal. We should be moving towards &lt;a href="https://www.helpnetsecurity.com/2024/12/18/gitguardian-multi-vault-integration/?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;vault-issued dynamic credentials&lt;/a&gt;, cloud-native &lt;a href="https://blog.gitguardian.com/aws-iam-outbound-identity-federation-with-gitguardian/" rel="noopener noreferrer"&gt;IAM security tokens&lt;/a&gt;, OAuth delegated access, &lt;a href="https://blog.gitguardian.com/getting-started-with-spiffe/" rel="noopener noreferrer"&gt;workload identity federation&lt;/a&gt;, and sidecar or node-local broker designs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Good implementation choices narrow the blast radius further
&lt;/h3&gt;

&lt;p&gt;Per-task issuance beats broad agent-global issuance. Brief caching can help reliability, but the cache should never outlive the intended task boundary. Identity proof should be separate from permission grants so the scope can change without rewriting the trust model. Issuance events should be logged. Secrets themselves should never be logged.&lt;/p&gt;

&lt;p&gt;That is the control plane story. But, it still leaves one practical question unanswered: "How do we know when the real world drifts away from the intended design?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Ephemeral Credentials Reduce Exposure. GitGuardian Finds The Failures Around Them.
&lt;/h2&gt;

&lt;p&gt;Short-lived credentials solve one class of problem very well. They shrink the abuse window after a leak. But they do not prevent credentials from leaking, and they do not guarantee that every agent in a real environment uses ephemeral access as the architecture diagram suggests. This is where GitGuardian can help.&lt;/p&gt;

&lt;p&gt;Agentic systems create more code, configs, prompts, logs, and automation artifacts. Every one of those surfaces can possibly contain a secret, a token, or a fallback credential that was never supposed to persist. Some will be short-lived and still live enough to matter. Some will be refresh tokens with a longer value. Some will be static keys created during a rushed integration and forgotten after the launch.&lt;/p&gt;

&lt;p&gt;Some will sit outside the approved issuance path entirely.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gitguardian.com/monitor-internal-repositories-for-secrets?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;GitGuardian gives teams continuous visibility into that sprawl&lt;/a&gt;. It catches exposed secrets in source code, collaboration flows, development pipelines, and operational artifacts before those credentials become a hidden standing risk. That function grows more valuable, not less, in environments that have already adopted short-lived credentials. Mature teams still need a way to find the exceptions, the leaks, and the shortcuts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The heart of the journey is operational, right where GitGuardian lives
&lt;/h3&gt;

&lt;p&gt;The hardest part of a credential strategy is usually not the first policy decision, but maintaining that strategy under delivery pressure, platform variance, and human shortcuts. This is where GitGuardian can help security teams move from principle to enforcement.&lt;/p&gt;

&lt;p&gt;GitGuardian helps teams detect whether their &lt;a href="https://blog.gitguardian.com/nhi-governance-is-the-outcome-gitguardian-is-how-you-get-there/" rel="noopener noreferrer"&gt;non-human identities have fallen outside their governance policies&lt;/a&gt;. You need to know about leaked tokens during their active lifetime, forgotten fallback keys that linger after a migration. You need a clear way to identify secrets introduced by AI-assisted development and surface shadow credentials that bypass the official broker or vault flow. You can not shorten the path from exposure to response without this level of real-time insight.&lt;/p&gt;

&lt;p&gt;In practical terms, GitGuardian becomes the feedback loop for your credential architecture. It tells you whether your move toward ephemeral access is actually reducing the number of secrets in code and config. It tells you whether engineering teams are still creating one-off exceptions. It tells you where the safety net needs tightening before a small shortcut becomes a durable blind spot.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitGuardian helps teams coordinate migration efforts
&lt;/h3&gt;

&lt;p&gt;A shift toward short-lived credentials often needs buy-in from platform teams, developers, and engineering leadership. That buy-in comes more easily when the security team can show where current exposure actually lives.&lt;/p&gt;

&lt;p&gt;GitGuardian helps produce that picture. It gives teams a way to &lt;a href="https://blog.gitguardian.com/sre-playbook-a-guide-to-discover-and-catalog-non-human-identities-nhi/" rel="noopener noreferrer"&gt;inventory existing identities, identify the highest-risk credentials, and prioritize migrations where the security gain is largest&lt;/a&gt;. That changes the internal conversation. The move to ephemeral credentials becomes a measurable risk-reduction program rather than a generic security ask.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruuy62j0iuveaybr9wmk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruuy62j0iuveaybr9wmk.png" alt="GitGuardian Workspace Identities list view" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In agentic environments, the GitGuardian platform supports the transition away from static credentials, helps detect the real-world failures that still happen during that transition, and gives teams continuous visibility after the new model is in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start With Visibility, Then Fix The Highest-Risk Paths
&lt;/h2&gt;

&lt;p&gt;To move towards better agentic access, you need to make a plan.&lt;/p&gt;

&lt;p&gt;Begin by inventorying agent-to-system credentials across code, configs, pipelines, notebooks, and runtime integrations. Find the static keys with the highest privilege and widest reuse. Add continuous secret detection everywhere those artifacts live.&lt;/p&gt;

&lt;p&gt;You need visibility before you can cleanly reduce standing risk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Move new workflows to dynamic identity
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://blog.gitguardian.com/how-to-get-there-spiffe/" rel="noopener noreferrer"&gt;workload identity&lt;/a&gt;, brokered short-lived tokens, or scoped delegated access for new agent workflows. Set TTL by agent class rather than by team preference. Instrument issuance and expiry events. Measure refresh failures and recovery paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Break broad permissions into stages
&lt;/h3&gt;

&lt;p&gt;As systems mature, split long-running workflows into stages with separate credentials. Remove shared credentials across agents and tenants. Drill revocation and rotation so the response becomes operational muscle memory. GitGuardian will catch the exceptions, leaks, and drift that architecture alone will miss.&lt;/p&gt;

&lt;h3&gt;
  
  
  Treat long-lived credentials as governed exceptions
&lt;/h3&gt;

&lt;p&gt;Reserve long-lived credentials for explicit cases with clear owners, narrow scope, regular review, and compensating controls. Exception paths have a habit of becoming permanent, and this is something teams must stay on top of. Continuous monitoring is what keeps an exception from quietly turning back into the default.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Best Strategy Is Measurable and Hard to Abuse
&lt;/h2&gt;

&lt;p&gt;Short-lived credentials should be the default for agentic systems because they sharply reduce exposure when a credential crosses its intended boundary. That is the right baseline. Production systems still have to carry the weight of token brokers, workload identity, refresh logic, and brittle third-party integrations.&lt;/p&gt;

&lt;p&gt;If you are looking for a better path forward, we suggest tying TTL to agent behavior and privilege. Use dynamic issuance where it materially reduces blast radius. Segment long-running workflows. Keep long-lived credentials inside explicit exception handling. Then add continuous secret monitoring as the layer that sees what the model misses, catches what the rollout leaves behind, and shortens the distance from leak to response.&lt;/p&gt;

&lt;p&gt;Ephemeral access changes the risk curve. GitGuardian helps teams prove they are actually moving along with it. &lt;a href="https://www.gitguardian.com/book-a-demo?ref=blog.gitguardian.com" rel="noopener noreferrer"&gt;We would love to help you get started&lt;/a&gt; on your path to better agentic access management.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devsecops</category>
      <category>cybersecurity</category>
    </item>
  </channel>
</rss>
