02 - Evaluate & Secure / Security Review

Security Review

A security-focused review of the code your team wrote with AI coding assistants - injection flaws, unsafe defaults, secrets handling, generated authorization logic - plus the application-level surface your AI features introduced, delivered as reproducible findings with fixes in the code.

Entry packageSecurity Review: 1 Applicationfrom EUR 6,1001 application · up to 4 weeks from scopingWhat is included
In short
01

Both surfaces, one review

The AI-written code and the AI feature it added: prompts, trust boundaries, agent permissions.

02

A fix, not a warning

Each finding comes with a patch, a diff or a worked example your engineers apply directly.

03

Ranked so you can plan

Critical to Low, each with a reproduction, so the sprint after the review writes itself.

23Minds reviews the security of code produced with AI coding assistants and of the AI features that code adds to a product.

Show the full summary

The review covers the AI-touched parts of your repository: injection flaws, unsafe defaults, secrets handling, dependency choices the assistant made, authorization logic it generated and error handling that leaks internals. It then moves to the application-level AI surface: how the app builds prompts, what it sends to and trusts back from an LLM API, how user input reaches a prompt, what an in-app agent is permitted to call, and how model output is handled before it reaches a user, a browser or a database. Every finding ships with a reproduction and a concrete fix in your code, plus the review rules your team applies afterwards so the same class of issue stops at code review. This is a code-level engagement: infrastructure, cloud and organizational security are out of scope by design.

Why 23Minds

What makes this service defensible.

  • Mapped to OWASP LLM Top 10

    Findings on the AI surface reference the category and the mechanism, not a generic risk label.

  • Reproduction for every finding

    File, lines and the exact request that triggers it; nothing you cannot verify yourselves.

  • Price set before work starts

    One application, threat model and audit included; the price is fixed once the scope is agreed, four weeks.

  • Re-review after the fixes

    A second pass confirms the fixes landed; the finding list closes with evidence, not a promise.

How we work

The process, phase by phase.

  1. 1

    1. Scope + code walkthrough

    Agree which repositories and which AI-touched code are in scope, which assistant produced it, and where the AI features sit. Walk the codebase with a senior engineer from your side.

    Week 1
    A repository drawn as a tree of nodes, three nodes on its edge ringed in yellow: the entry points where outside input comes in, agreed as the scope of the review.
  2. 2

    2. Code-level security review

    Read the AI-touched code for injection flaws, unsafe defaults, secrets handling, generated authorization logic, dependency choices and leaking error handling. Reproduce what we find.

    Week 1-2
    Rows of code with one line broken by a yellow wedge pushing in from the side: an injection point found in AI-generated code.
  3. 3

    3. AI feature surface review

    Trace how user input reaches a prompt, what the app sends to and trusts back from the LLM API, what an in-app agent is permitted to call, and how output is handled before it reaches a user or a data store.

    Week 2-3
    A central box exchanging arrows with three smaller ones, one arrow crossing a dashed boundary at a yellow point: the data flow between the app, the model and an in-app agent across a trust boundary.
  4. 4

    4. Report, fixes + review rules

    Deliver the finding list with fixes, walk the engineering team through the top issues, and hand over the review rules and CI checks that catch the same classes in future PRs.

    Week 3
    A checklist with four of five rows ticked and a yellow-bordered card slotted into a pipeline: the findings closed and a review rule added to CI that catches the same class in future pull requests.
How to start

Pick the way in that fits your budget and timing.

Every practice has a free first step, an entry package with a written deliverable and its price listed here, and a full project or retainer quoted after a first call. Once the scope is agreed, the price is fixed, with no hidden costs.

  1. 1
    Step 1 · Free

    Intro call or self-assessment

    60 minutes · 1 engineer · no obligation

    Free
    Show details
    • Intro call with an engineer, or the online self-assessment
    • A written next step within one business day
    • No obligation and no sales deck
    Talk to an engineer
  2. Recommended
    2
    Step 2 · Entry package

    Security Review: 1 Application

    1 application · up to 4 weeks from scoping

    from EUR 6,100 net

    The price is fixed once the scope is agreed on the intro call, no hidden costs; extras only from the Not included list.

    Show details
    • Threat model of one AI-touched application
    • Hands-on security audit with a data-flow diagram
    • AI supply-chain risk assessment
    • Findings ranked by severity with fix guidance
    • Not included: Network and infrastructure testing, penetration testing of live systems, compliance certification, fix implementation.
    Ask for this package
  3. 3
    Step 3 · Project or retainer

    Full scope, quoted after a first call

    Full scope · phased delivery · quoted per phase

    from EUR 18,700 net, quoted after a first call
    Show details
    • Security review across several repositories or products
    • Remediation support
    • Re-review after the fixes land
    Start the conversation
Sounds familiar?

The situations that bring teams to this service.

  • The assistant wrote query building, file handling and request parsing at speed, and nobody checked those paths for injection
  • Generated code carries the framework defaults the model happened to know: permissive CORS, disabled verification, debug error output in production
  • Secrets and tokens are handled the way the assistant demonstrated them - in code, in logs, in client bundles
Show the other problems (3)
  • Authorization checks were generated per endpoint and no one has verified they are consistent, or present at all
  • User input reaches a prompt unfiltered and model output goes straight into HTML, a shell call or a database write
  • An in-app agent holds tool access and credentials far wider than the task it actually performs
Who it's for
  • Product teams that adopted an AI coding assistant and are now shipping code faster than anyone reviews it for security
  • Software houses and agencies delivering AI-assisted code whose clients started asking for an independent security opinion on it
  • Companies that added an LLM feature (chat, summarization, an in-app agent) to an existing product and never reviewed what it exposed
  • Engineering leads, CTOs of product teams and tech leads who need the findings in the repository, not in a governance document
Failure modes

Where this goes wrong, and what we do about it.

  1. 1. The generated default is insecure and nobody looks twiceWhat stays with you: reproduction steps per finding, severity with the reasoning behind it, and the fix verified on your branch
    What happens

    Assistants reproduce the most common pattern in their training data, and the most common pattern is often the least careful one: string-built queries, signature verification switched off to make a test pass, secrets read straight from the environment into a log line. It compiles, the tests pass, and the reviewer reads it as ordinary code because it looks ordinary.

    What we do about it

    We model the attack surface the assistant actually touched - input handling, auth paths, secret flow - rather than scanning the whole repository evenly. Every finding is reproduced against a running instance before we report it, so you get an exploit path, not a warning.

  2. 2. There is no incident to learn from because nobody publishes oneWhat stays with you: mapping of documented failure classes to your codebase, with a verdict and a check for each
    What happens

    Asked directly whether anyone has had a security incident caused by a coding agent, the most upvoted answer is that if they had, they would not say so, because of NDAs and embarrassment. The result is that teams calibrate risk from vendor marketing instead of from what actually goes wrong.

    What we do about it

    We work from documented cases rather than from feeling: published incidents, disclosed vulnerabilities, and the concrete failure classes behind them. Each is mapped onto your stack with a yes or no answer about whether it can happen here, and the ones that can are turned into checks.

  3. 3. The review is a moment, and the code keeps arrivingWhat stays with you: gates wired into your pipeline, with the deliberately failing test that proves each one works
    What happens

    A one-off audit describes the repository on the day it was read. With assistants in the loop the same repository looks different in three weeks, so the report ages faster than the team can act on it. The findings get fixed, the pattern that produced them does not.

    What we do about it

    We fix the class, not the instance: for every finding we identify what allowed it in and add a gate that fails on it next time. We verify the gate by pushing a change that should trip it.

What you get

Deliverables, not deliverable-shaped slides.

  • Severity-ranked finding list (Critical / High / Medium / Low), each with a reproduction and the exact file and lines
  • A concrete fix per finding: a patch, a diff or a worked example your engineers can apply directly
  • Review of the AI feature surface: prompt construction, trust boundaries around the LLM API, output handling, agent tool and permission scope
  • Secrets and dependency findings for the AI-touched code, including packages the assistant introduced
  • A short set of security review rules for the team - what to look for in AI-generated PRs, as a checklist and as linter or CI rules where they can be automated
  • Working session with the engineering team on the top findings and how each one got written
FAQ

Questions procurement teams ask.

The Independent AI Code Audit grades AI-assisted code on four dimensions - correctness, security, maintainability, test fitness - and gives you an overall assurance signal. Security Review takes only the security dimension and goes far deeper: we chase each issue to a working reproduction and a fix in the code, and we also review the AI feature surface, which the evaluation rubric only samples. Teams that want a single broad picture buy the audit; teams that already know security is the concern buy this.
We do not do infrastructure, cloud or network security, penetration testing of live systems, offensive red teaming of deployed AI, SOC 2 or ISO 27001 audit programmes, or organizational security governance. We also do not assess your LLM vendor or model supply chain. We review code and the application-level surface that code creates. If you need any of the above, bring in a specialist for it - we are happy to hand over our findings so their work starts from something concrete.
Read access to the repositories in scope, the PR history for the AI-touched period, and a running instance in a non-production environment so we can reproduce findings. No production access, no customer data. A senior engineer from your side for a walkthrough at the start and a review of the findings at the end. Everything runs under NDA.
Most engagements run 2-3 weeks from scoping to report. A single service or a well-bounded AI feature can be done in a week; a large multi-repository codebase is scoped as several passes rather than one long review. Fixed fee, agreed once the scope is clear.
Remotely by default, under NDA, on your repository access. On-site delivery in Poland is available where a client's policy requires the code never leaves their network, at the same fee.
The finding list with fixes, the review rules as a checklist, and whatever we could turn into linter or CI checks. The point is that the next PR written with an assistant gets caught by your own review, not by us. Teams typically bring us back after a few months for a shorter re-review rather than a repeat of the full engagement.
TypeScript and JavaScript, Python, Go, Ruby, Java and Kotlin, and the common web frameworks around them. Mobile and embedded are out of scope for this practice. Tell us the stack on the intro call and we will say plainly whether we are the right team for it.
No. Plenty of engagements cover an ordinary product where the only AI involved is the assistant that helped write it. If the product has no LLM feature, we drop phase 3 and put the time into the code review instead.
Guides

Guides that lead to this service.

Talk to an engineer.

Describe where you are with security review. A reply within one business day.

Talk to an engineer
Szczecin - ul. Wawrzyniaka 6WWarszawaZielona GóraKraków