All posts

April 18, 2026 · 4 min read

Clearing a Backlog of Security Debt vs Never Letting It Build Up in the First Place

Two different ways to think about security across a growing app: do a big, dedicated pass periodically to catch up on everything that's accumulated, or build the checks into how you ship every single feature from the start, so there's nothing large to catch up on later. Both work in theory. Only one of them tends to actually happen in practice.

Why the big periodic pass is appealing on paper

A scheduled, dedicated security review, once a quarter, once before a major launch, feels manageable to plan for. It's a discrete project with a start and an end, easy to schedule, easy to budget for as a single line item. The appeal is real: you don't have to think about security constantly, just show up for the scheduled review and handle what it finds.

Why it tends to underperform in practice

The gap between reviews is exactly where new features, and new mistakes, accumulate fastest. A quarterly review means up to three months of newly shipped features have zero security scrutiny until the next scheduled pass, and in a fast-moving AI-assisted project, three months is enough time to ship a lot of new surface area. Worse, the review itself tends to get postponed the same way any non-urgent scheduled task does, competing against whatever feels more pressing that specific week, until it's not quarterly anymore, it's whenever there's time, which in practice often means after something's already gone wrong.

What baking it in incrementally actually looks like

  • Every new feature that touches user data gets the same two-minute question before it ships: who can reach this, and does the access rule actually match who should be able to.
  • Every new database table gets its access rules checked at the moment it's created, not retroactively during some future audit.
  • Every new API route gets a quick check for authentication and rate limiting as part of finishing the feature, the same way you'd check that it actually returns the right data.
  • The checklist becomes part of the definition of 'done' for a feature, not a separate task competing for its own dedicated time slot.

Why this actually holds up better over time

A two-minute check attached to something you're already doing, shipping a feature, is far more likely to actually happen consistently than a bigger, separate project competing for its own calendar slot. It also means there's never a large backlog of unreviewed features waiting for a big catch-up pass that keeps getting pushed. The total amount of checking is roughly the same either way. The difference is whether it happens in small, consistent pieces that actually get done, or in a large batch that keeps losing the scheduling fight against whatever feels more urgent.

A periodic deep review still has real value, especially from an outside perspective that catches what daily habits can't. It works best as a supplement to the incremental habit, not as a replacement for it, precisely because the incremental version is the one that actually survives contact with a busy week.

Related reading

Harbova is a security service for apps built with AI tools. Start with a free scan, and if it finds something serious, we can fix it and prove it is closed.