blog
APPSEC

AI Changed How Software Gets Written. AppSec Has to Change With It.

Posted 
September 17, 2026
|
0
 min
AI writing code

Shift left moved security from deployment back to development, and that was the right call. But the intervention point kept moving left for a reason: earlier is cheaper, and earlier is where prevention becomes the better bet. And thanks to AI coding agents, we have yet another gap. But shift left was built around one important assumption: a human writes the code first, then security tooling evaluates it. The question now is how you get your security rules in front of the agent before it writes anything at all.

TLDR:

  • AI is changing how software is created and where security can intervene.
  • Traditional shift-left AppSec assumes code exists before security evaluates it. AI coding agents create a new opportunity to apply security before the code exists at all.
  • The next AppSec model combines governance at generation with SAST, SCA, secrets scanning, prioritization, and remediation downstream.
  • Shift left is not dead. AI created a new left.

AppSec Was Designed Around Human-Written Code

Shift left security grew out of the DevOps movement

The model spread fast for good reason. Security teams moved from last-minute gatekeeper to collaborator. Developers catching issues in their own PRs built real security intuition. Compliance audits got easier because controls were baked into the pipeline. But shift left always carried a structural assumption underneath all of it: a human developer writes the code, then tooling reviews it.

In practice, that assumption created friction long before AI agents arrived. SAST scanners flood queues with false positives and low-severity noise, so real risks stop standing out. According to Help Net Security, organizations widely claim to have implemented shift left, but execution and consistent enforcement remain the gap. Tool sprawl adds another layer: most teams stitch together separate scanners for SAST, SCA, secrets, and IaC, each with its own alert format, a tension examined in the comparison of CI/CD pipeline security vs. IDE plugins vs. pipelineless approaches. Coverage is uneven because the entire model depends on per-developer tooling adoption. That structural assumption is what AI coding agents are now breaking entirely.

AI Coding Agents Changed the Development Model

That structural assumption is where the model breaks down.

AI coding agents broke that pattern entirely. Tools like Cursor, GitHub Copilot, and Claude Code generate complete implementations in one pass, and the dangers of vibe coding that accompany this shift are hard to overstate. They deliver those implementations as draft PRs. There is no incremental commit trail to scan against. The agent writes a whole feature, self-validates in a virtual environment, and hands a finished PR to a human reviewer who had no visibility into how it was built.

That behavioral gap matters more than it might seem. Most shift left tooling was designed to intercept code at the point of push, treating each commit as a natural checkpoint. When an agent bypasses that cycle and arrives with a completed PR, the checkpoint never fires in any meaningful way. The scanner may eventually run, but by then the code is already sitting in review. Governance after generation is catching issues late, regardless of what you call it.

The volume problem compounds this further. AI agents generate code at machine speed. A single developer using Cursor or Claude Code can produce PR volume that would have taken days of human writing. Security teams already struggling to keep pace with human-written code now face a dramatic increase in review surface, with no corresponding increase in capacity to govern it.

More Code Isn't the Only Problem

The research picture here is not ambiguous. A 2026 Cloud Security Alliance research note found that CVEs attributable to AI-generated code rose sharply, with AI-assisted developers introducing security findings at a disproportionately higher rate than their output volume alone would predict. A large share of AI-generated code fails basic OWASP Top 10 tests on first generation, and preventing vulnerabilities in AI coding assistants requires deliberate controls. As Infosecurity Magazine reported, the problem compounds because most developers overestimate the security quality of AI suggestions and accept them without modification.

"The vulnerability is that developers assume it doesn't write bad code."

Speed amplifies the exposure. Agents produce code faster than any human reviewer can assess it, and false confidence that AI output is pre-vetted means fewer developers apply the scrutiny they would to their own work.

The compounding problem is three-dimensional: AI agents produce code at machine speed, AI-generated code fails basic OWASP Top 10 tests at a higher rate than human-written code on first generation, and security teams have no corresponding increase in capacity to govern the review surface.

Why Traditional Shift Left Tools Cannot Govern AI Agents

Traditional shift left tools were designed for a workflow AI agents simply don't follow.

SAST scanners expect to intercept code at a commit or push event. IDE plugins expect a developer in VS Code or JetBrains, writing code line by line. SCA tools expect a human to have installed dependencies and triggered a build. Every one of these tools assumes the same thing: a human is at the keyboard.

AI agents operate entirely outside that model. They run server-side, generate a complete implementation, and open a draft PR without a human writing a single line. The IDE plugin never fires because there is no IDE session. The push-time scanner may eventually run, but only after the agent has already finished.

The coverage numbers make this concrete. IDE plugin adoption has historically hovered around 20% of developers even in organizations that actively rolled them out, which is part of why AI SAST built for AI-assisted coding has become a necessary complement. That gap existed before AI agents became common. Now, with agents generating code on remote infrastructure with no workstation in the loop, the remaining 80% is structurally unreachable by any plugin-based model.

This is an architectural mismatch, not a tuning problem. Shift left tools can be configured and refined without touching the core assumption that a human developer initiates the code. That assumption is what breaks down. Governance that only activates after an agent has already written and submitted code is operating too late, regardless of how fast the scanner runs.

The AppSec Intervention Point Has to Move Again

Security has kept moving earlier in the SDLC because prevention is cheaper than downstream remediation at every stage. Each time the development model changed, the intervention point followed. AI coding agents create the next move.

The progression looks like this: DEPLOY -> TEST -> BUILD -> CODE -> GENERATE. Security has kept moving left along that chain, and the next checkpoint is GENERATE, the moment before any code exists.

"AI doesn't make shift left obsolete. It creates a new left."

Governing at generation means the intervention point is before a single line of code is written. That is where preventing a vulnerability costs nothing, because the vulnerability never gets introduced in the first place.

What Security at the Point of Generation Means

Governance at generation means catching issues before they exist, not before deployment. The rule fires when the agent reads its configuration, not when a scanner inspects the output. The mechanics of multi-agent AppSec run deeper than most teams realize.

This works by embedding security policy directly into the files AI coding agents load before generating any code:

AI Coding AgentConfig File Read at GenerationEffect of Embedding Security Policy
Cursor.cursor/rules/Policy becomes a hard constraint on what the agent writes, not a post-generation warning.
Claude CodeCLAUDE.mdRepository-level security requirements are visible to the agent before a single line is produced.
GitHub Copilot.github/copilot-instructions.mdTeams encode controls at the source instead of patching output downstream.

A vulnerability the agent never introduces is one no scanner needs to find.

From Detection-First to Governance-First AppSec

Scanning does not go away in this model. It becomes the second line of defense rather than the first. The role shifts from primary gatekeeper to confirmation layer, running after a prevention and governance layer has already constrained what the agent was allowed to write.

Detection-first AppSec: GENERATE -> SCAN -> FIND -> TRIAGE -> ROUTE -> FIX
Governance-first AppSec: POLICY -> GENERATE -> VERIFY -> SCAN -> REMEDIATE

Scanning still runs in the governance-first sequence, but it operates on output that was already shaped by policy at generation time. The posture changes from reactive (find what went wrong after the fact) to proactive (constrain what can be written before a line of code exists). That is the practical difference between a detection-first program and a governance-first one.

The coverage argument is where this approach separates from anything shift left could offer. Plugin-based tools depend on workstation installation. Rules embedded in repository configuration files travel with the repo. Every agent that clones and reads it gets the policy, whether running on a developer's laptop or remote cloud infrastructure. Coverage becomes a function of repository connection, not developer compliance.

This is the logical next step in how AppSec practice has evolved. Shift left moved security from deployment to development. Governance at generation moves it earlier still, to the moment before code exists. The intervention point keeps moving earlier because that is where fixing problems is cheapest, and where preventing them is possible at all.

What the New AppSec Operating Model Requires

A governance-first program keeps everything that shift left does well (SAST, SCA, secrets scanning, PR checks) and adds a layer that operates before any of that runs.

In practice, that means four concrete requirements:

  • An inventory of which AI coding tools are active across which repositories. You cannot govern what you cannot see. As agents like Cursor, GitHub Copilot, and Claude Code proliferate across engineering teams, knowing which agent is writing in which codebase is the baseline.
  • Security policy embedded in agent configuration files at the repository level, not distributed through IDE plugins or MDM scripts. Policy that lives in the repo governs every agent that reads it, including cloud-based agents with no workstation in the loop. That is the model behind agentic rules enforcement at the repository level.
  • Attribution and audit trails that answer whether a given PR was governed at generation. "We scanned it" is a weaker answer than "the agent was operating under our security rules when it wrote this."
  • Finding routing that reaches the right developer today: building a developer-native AppSec program without slowing engineering depends on getting this routing right. Per Arnica's internal benchmark, 82% of findings were authored by developers no longer at the company. A backlog that routes to departed engineers accumulates without closing.

Coverage is where governance programs fail if the architecture is wrong. Any model that requires per-developer setup reproduces the same adoption ceiling that has limited shift left for years. Repository-level configuration sidesteps that entirely: one connection, every repo, every agent.

How Arnica Governs the Agentic Development Lifecycle

Arnica was built for the governance gap this exact article has described. The Agentic Rules Enforcer writes a managed security rule block directly into the configuration files each AI agent reads before generating any code. Cursor, Claude Code, GitHub Copilot, Gemini, and Augment are all supported. Because those rules live in the repository and are delivered through the SCM connection, coverage reaches 100% of connected repos with no per-developer setup and no IDE plugin adoption curve to manage.

Every PR generated under that governance includes attestation: auditable evidence showing how many times the AI applied your security rules during generation. That gives security teams a verifiable answer when leadership or auditors ask whether AI-generated code was governed at generation, not merely scanned after the fact.

On the backlog side, Arnica's identity graph routes findings to the developer currently active in the relevant codebase. That routing distinction is what separates a backlog that closes from one that just grows.

Forrester named Arnica in its Forrester Agentic Development Security Tools, Q2 2026 report, the first tier-one analyst recognition of this category by name. Gartner listed Arnica as a Sample Vendor in the Hype Cycle for Platform Engineering 2026 under Software Supply Chain Security.

The Next Era of AppSec Starts Where Code Starts

Shift left security was the right answer for human-written code, and most of what it built still holds. What changed is the assumption underneath it: that a developer is at the keyboard. With AI agents writing full PRs on remote infrastructure, governance has to happen earlier than any scanner can reach. Sign up for Arnica and see how repository-level rules govern AI-generated code before it ever hits review.

FAQ

What AppSec tools write security policy directly into AI coding agent config files like CLAUDE.md or Cursor rules?

Arnica's Agentic Rules Enforcer writes a managed security rule block into the configuration files each AI coding agent reads before generating any code: .cursor/rules/ for Cursor, CLAUDE.md for Claude Code, .github/copilot-instructions.md for GitHub Copilot, GEMINI.md for Gemini, and .augment/rules/ for Augment. The rule block is delivered through the SCM connection on a PR-piggyback pattern, so coverage reaches 100% of connected repositories with no per-developer setup required. If a developer deletes the block, the next qualifying PR event restores it.

How do I track whether agentic security rules in CLAUDE.md or Cursor config files are actually being followed in committed code?

Arnica generates attestation on every PR produced under its governed rules, giving security teams auditable evidence showing how many times the AI agent applied security controls during generation. Because agents are instructed to cite the Rule ID inline, you can search committed code for those identifiers to measure how often governed controls actually landed. That moves the audit answer from "we scanned it" to "the agent was operating under our security rules when it wrote this."

What secure development lifecycle practices should security leaders follow when teams ship AI-generated code daily?

Security leaders need four active controls in place: an inventory of which AI coding agents are active across which repositories; security policy embedded in agent configuration files at the repository level instead of distributed through IDE plugins; attribution and audit trails that confirm whether a given PR was governed at generation; and finding routing that reaches the developer currently active in the relevant codebase, not the one who wrote the original code. Any governance model requiring per-developer installation reproduces the same coverage ceiling that has limited shift left for years — repository-level configuration is the only architecture that sidesteps it.

Why does shift left security fail to govern AI coding agents like Cursor, GitHub Copilot, and Claude Code?

Shift left tools were built around a single assumption: a human developer is at the keyboard, pushing code incrementally. AI coding agents break that model by running server-side, generating complete implementations, and opening draft PRs with no developer workstation in the loop, meaning IDE plugins never fire and push-time scanners only activate after the agent has already finished writing. The coverage gap is architectural, not a configuration problem: any governance model that only intercepts code after generation is operating too late to prevent the vulnerability from being introduced in the first place.

What's the difference between shift left security and governing AI-generated code at generation time?

Shift left security moves security checks from deployment back to the code and build stages, catching vulnerabilities after a developer writes them but before they reach production. Governing at generation moves the intervention point earlier still, to the moment before code exists, by embedding security policy into the configuration files AI coding agents read before producing any output. A vulnerability the agent never introduces requires no scanner to find.

Reduce Risk and Accelerate Velocity

Integrate Arnica ChatOps with your development workflow to eliminate risks before they ever reach production.  

Try Arnica