Skip to content

Security capability experiment

Achilles AI

Static Analysis for AI-Generated Code

A Rust static-analysis tool focused on AI-generated and AI-application code patterns. It combines tree-sitter parsing, source-controlled rules, SARIF output, command-line and editor surfaces, and optional model-assisted triage.

Business ↔ technology bridge · Security capability experiment

Convert fast AI-assisted coding into reviewable release evidence.

Explores deterministic security analysis for AI-generated and AI-application code.

This is a portfolio and source interpretation—not a customer, deployment, certification, or outcome claim.

  1. 01

    Business pressure

    AI-assisted development can increase code volume and repeat insecure patterns faster than conventional review capacity grows.

  2. 02

    Product decision

    Keep deterministic parsing and source-controlled rules primary, with model-assisted triage optional and explicitly separate.

  3. 03

    Technical record

    Rust crates, tree-sitter parsers, YAML rules, SARIF output, CLI, LSP, CI integration, and selected fixtures.

  4. 04

    Evidence return

    Findings and unresolved uncertainty return to remediation priority, release criteria, security review, and engineering policy.

Source evidence

What the source actually establishes

A Rust static-analysis tool focused on AI-generated and AI-application code patterns. It combines tree-sitter parsing, source-controlled rules, SARIF output, command-line and editor surfaces, and optional model-assisted triage.

Maturity
Source prototype, access under NDA
Evidence review
Source snapshot through

Architecture and product decisions

  • Keep deterministic parsing and rules as the primary scan path; make model-assisted analysis optional.
  • Represent findings in interoperable output such as SARIF for CI and code-review workflows.
  • Position the tool as a complement to general-purpose security scanners, not a replacement for them.

Inspectable evidence

  • Five Rust crates covering parsers, core analysis, optional AI support, LSP, and CLI surfaces.
  • 210 source-controlled YAML rule files in the reviewed snapshot.
  • Tagged internal releases, integration fixtures, a GitHub Action, and an editor extension.

Claim boundary

  • Static rules can produce false positives and false negatives; a clean scan is not a security guarantee.
  • Optional model-assisted triage requires separate configuration and review.
  • No certification, comprehensive vulnerability coverage, or customer security outcome is asserted.

Repository evidence is not client, deployment, certification, or outcome evidence.

Architecture

From CI hook to security findings

Three layers: CLI and CI integration, a 210-rule AST scanner for selected AI-generated and AI-application patterns, and optional model-assisted triage that can help rank findings. None of them replaces security review.

Source map only: a layer can represent implemented code, an adapter boundary, or documented design. It does not assert a configured production service.

  1. 01

    Layer 1 — Developer Surface

    Rust command-line, LSP, CI, and SARIF surfaces support local and review-workflow scans. No universal runtime or scale performance is asserted.

  2. 02

    Layer 2 — 210-Rule Engine

    AST scanners for Python, TypeScript, JavaScript, Go. Five rule categories: vibe-code patterns, agent-security (tool definitions, capability sprawl), LLM application risks (prompt injection, unsanitised output), framework vulnerabilities, cloud misconfigurations. General-purpose scanners and these rules cover different surfaces.

  3. 03

    Layer 3 — Optional Model-Assisted Triage

    Optional triage with a Mistral model, local or hosted, can help filter likely false positives and re-rank findings by context. It runs only when enabled and does not replace security review.

The Problem

The Problem

Why AI-generated code is a security risk

  1. Code Ships Faster Than Reviews

    AI assistants generate code faster than humans can review it. Vibe coding — accepting AI suggestions with minimal scrutiny — is the new normal.

  2. Insecure Patterns at Scale

    AI optimises for working code, not secure code. The same hardcoded secret, the same SQL concatenation, the same permissive CORS — repeated across thousands of projects.

  3. AI-Specific Patterns Need Explicit Rules

    General-purpose scanners and AI-focused rules cover different surfaces. Prompt templates, agent tools, and model-output handling benefit from dedicated checks alongside existing SAST.

  4. Agent Security Is Uncharted

    Agents can be granted file, database, network, or shell capabilities. Their permission boundaries and tool inputs need review beyond conventional application-code checks.

Rules

Rule Categories

210 rules targeting five AI-specific vulnerability domains

Source scope only: an entry can describe implemented code, a documented adapter, or a configured workflow. It is not a statement that a production service is active.

  1. 01

    Vibe Code (VC001-VC040)

    40 rules for patterns commonly generated by AI coding assistants: hardcoded secrets in prompts, SQL injection via concatenation, dangerous code execution, insecure defaults, missing authentication, path traversal, insecure deserialization, and weak cryptography.

  2. 02

    Agent Security (AS001-AS030)

    30 rules for autonomous agent code: overly permissive tool definitions, unrestricted file system access, shell command execution from user input, missing audit logging, no confirmation before destructive actions, unsafe inter-agent communication, and privilege escalation vectors.

  3. 03

    LLM App (LA001-LA040)

    40 rules for production LLM applications: raw user input in system prompts, unsanitized HTML rendering, LLM-generated SQL execution, exposed API keys, missing prompt injection detection, insecure OAuth flows, deprecated SDK usage, unvalidated tool outputs, and training data exfiltration risks.

  4. 04

    Framework Security (FS001-FS050)

    50 rules across 10 frameworks: Express.js, Django, Flask, FastAPI, Spring Boot, Laravel, Rails, Next.js, NestJS, and Gin — covering debug mode exposure, missing auth guards, CORS wildcards, mass assignment, unvalidated DTOs, and actuator endpoint leaks.

  5. 05

    Cloud Security (CS001-CS050)

    50 rules across 7 platforms: AWS (15), Terraform (10), Kubernetes (6), GitHub Actions (5), GCP (5), Azure (5), Docker (4) — covering IAM over-permission, public buckets, disabled encryption, privileged containers, unpinned Actions, and misconfigured security groups.

  6. 06

    Custom YAML Rules

    Write custom rules in YAML — no Rust knowledge required. Define AST node types, regex patterns, ancestor context constraints, and fix suggestions. Scaffold new rules with a single command.

  7. 07

    SARIF & GitHub Integration

    Native SARIF v2.1.0 output for GitHub Security tab integration. Findings appear as inline PR annotations with severity, fix suggestions, and references. Also supports JSON and text output.

  8. 08

    Model-Assisted Triage (Optional)

    Optional triage with Mistral AI or local Ollama models can help filter likely false positives, re-rank findings by context and suggest fixes. It is enabled with the --ai flag and does not replace security review.

  9. 09

    Language Server Protocol

    An LSP surface provides diagnostics and selected code actions to compatible editors. Editor behaviour and rule coverage should be validated in the target workflow.

  10. 10

    GitHub Action & CI/CD

    The repository includes a GitHub Action and command-line integration path for CI. Other pipeline integrations require operator configuration and validation.

210 rules across 5 categories

AI-application patterns that need explicit rules

Deterministic rules identify selected AI-application patterns; optional model-assisted triage can help rank findings, but neither path replaces security review.

Repository surface only: availability, completeness, performance, and operational fitness require separate validation.

Vibe-Code Patterns

01

Hardcoded API keys in prompt templates, SQL via string concat in 'just demo' code paths, unsafe deserialisation, eval of LLM output, secrets logged at INFO. The cluster of patterns that ship when 'works once' beats 'works safely.'

Agent Security

02

Tool definitions with no parameter validation, agent capabilities that overlap with admin privileges, missing rate limits on LLM-callable tools, prompt prefixes that leak system identity. The cluster that lets a jailbreak turn into an incident.

LLM Application Risks

03

Unsanitised LLM output rendered as HTML, prompt-injection vectors in user-controlled context, indirect injection via retrieved docs, model-output piped into shell or eval, missing output schema validation. The OWASP-LLM-Top-10 made concrete.

Framework Vulnerabilities

04

Next.js Server Action exposure without auth, FastAPI dependency injection bypass, LangChain chain-of-thought leakage, Django ORM SQL injection via raw(), unsafe template render. Per-framework rules, not generic taint-tracking.

Cloud Security

05

Public S3 with sensitive prefixes, IAM roles with `*` actions, AWS Bedrock cross-account permissions, GCP Vertex AI exposed in a service-account-less context. The cluster that lets a leaked endpoint URL turn into a full data exfiltration.

Tech Stack

Built With

Named technologies identify repository dependencies or adapter surfaces; they do not assert a live integration or deployment.

Core Engine
Rust workspace: achilles-parsers, achilles-core, achilles-ai, achilles-lsp, achilles-cli — tree-sitter, serde, regex, YAML rule engine, taint flow analysis
Language Parsers
tree-sitter-javascript, tree-sitter-typescript, tree-sitter-python, tree-sitter-go, tree-sitter-java, tree-sitter-rust, tree-sitter-ruby, tree-sitter-php, tree-sitter-c-sharp, tree-sitter-swift
AI Integration
Mistral AI SDK, Ollama client, configurable model selection, false-positive filtering, severity re-ranking
CLI, LSP & Output
clap, coloured, serde_json, SARIF v2.1.0 output, Language Server Protocol
CI/CD
GitHub Actions (CI + cross-compile release), GitLab CI, Bitbucket Pipelines, pre-commit hooks
Platforms
Linux (amd64/arm64), macOS (amd64/arm64), Windows (amd64)

Source Code

Explore the Code

The Achilles AI source code is available upon request for evaluation and partnership purposes.

NDA Required

To access the source code, please sign our Non-Disclosure Agreement.

Related Consulting Services

Need help securing AI-generated code in production? Our consulting services complement Achilles AI.

EU AI Act Compliance Consulting — Risk Classification & Implementation
4

EU AI Act Compliance Consulting — Risk Classification & Implementation

Twelve to twenty-four weeks to risk-classify your AI systems, support the provider-led conformity assessment and engineer the evidence, produce the Annex IV technical documentation, and stand up post-market monitoring — with special depth on the high-risk categories that apply to autonomous, industrial, and robotics deployments

Learn more

Partnership

Interested in Achilles AI?

Whether you need AI code security auditing for your team or want to explore a partnership in the AppSec space.

Get in Touch
AI Insights

The AI Dispatch

From demo to dependable operation. Subscribe for new Physical AI reading.

Unsubscribe anytime. No spam, ever.

Achilles AI — Static Analysis for AI-Generated Code