skulk

AI security posture,
assessed honestly.

Two engagements, at the two moments that matter: a design review before you build, and an automated posture assessment before you ship. Every finding carries its evidence. Every report states what it did not assess.

63checks in the pre-release posture assessment
4inputs: repo, cloud, declared intent, data plane
Cloud & self-hostedAWS, Google Cloud, or infrastructure you run yourself
Read-onlynothing installed, nothing stays behind

Two engagements, two moments in the lifecycle

The same eight control domains, asked twice. In the design phase they are a checklist — decisions, made cheaply, before anything is built. Before release they are a verification — run automatically against the system that actually shipped. Either stands alone; together they close the loop between what you decided and what you built.

Phase 1 · architecture & design

Design review

A working session with the people building it. One decision per control domain — where the tenant boundary lives, what each agent may hold, how memory is partitioned and retained, what gets logged. No access, no scan, no credentials.

  • A fixed-fee engagement: half a day to a day with your engineers
  • Deliverable: a decision per domain and a written record of your intent — yours to keep
  • Nothing to provision; no repository, cloud or store access required
  • The cheapest moment to move a boundary is before it exists

Choose this when you are designing or refactoring an AI application, or when nobody can currently answer “is this index multi-tenant?” from a written record.

Phase 2 · pre-release & on change

Automated posture assessment

The scan. Four surfaces read together — your repository, your cloud control plane, your stores, and the intent you declared — and compared. Where reality disagrees with what you decided, that disagreement is the finding.

  • 63 checks across the RAG and agent stack — AWS, Google Cloud and self-hosted
  • Read-only and deterministic — nothing installed, nothing stays behind
  • Evidence on every finding; a coverage ledger for everything else
  • Re-runnable: the diff after a quarter of fixes is real, not tester variance

Choose this when you are about to ship, when something changed — a new agent, a new tenant, a new tool — or when a customer, auditor or board asks a question you would rather answer with evidence than belief.

They compose. The design review’s output is exactly what the assessment measures against — declared intent is the input no scanner can collect for itself. Each is a scoped, fixed-fee engagement and each stands alone: the review needs no access to anything, and the assessment can begin from your repository alone.

Where these fit — and when something else fits better

The two engagements above do not replace the layers you already run, and they are not interchangeable with them. Here is the honest comparison — including when to choose one of these instead.

A security platform

Continuous AI-SPM across your cloud estate, correlated with wider cloud posture — and it discovers AI infrastructure well. Choose one when you run AI at scale and can staff a platform. It is a subscription and a deployment, and it discovers by cloud API.

Red teaming

Human-led adversarial testing — prompt injection, jailbreaks, attacker creativity against a live system. Choose one when a critical system needs to be attacked rather than audited. It answers what can be broken; neither engagement above does.

A runtime guardrail

In-line defenses screening prompts and outputs in production. Choose one to protect a live perimeter. A guardrail enforces at runtime — it does not audit the entitlements and IAM paths behind it.

What a Skulk engagement gets you

Deterministic, so re-assessment means something

Same environment, same findings. The second report shows exactly what was fixed and what is new — no tester variance in between.

Evidence on every finding

A traced graph path, a file and line, or a named configuration field. If we cannot show it, we do not report it.

Checks your declared posture against your running system

Seven checks compare what you told us to what we found — declared row-level security against the live catalog, declared agent identity against its actual execution identity, declared providers and retired stores against the code that still calls them, a declared-private Vertex endpoint against its observed network path. Disagreement is the finding.

A declared-vs-observed record, dated

The report lays every declaration you made beside what we found — confirmed, contradicted, or not verifiable with the reason — and states how old your declaration is, so its confirmations are weighed against their freshness.

A ledger of what wasn’t assessed

Every report states its own limits. Nothing unparsed or unassessed is ever presented as clean.

Framework mapping built in

Every check carries OWASP LLM Top 10 and MITRE ATLAS mappings, with NIST AI RMF where defensible, so findings arrive in vocabulary your security team already reports in.

nothing stays behind no subscription no data leaves your side fixed, stated scope re-assessable

The honest boundary

A control-plane assessment has a hard edge. Pretending otherwise is how false comfort happens, so the edge is stated in every report.

Verified — static and control-plane

  • Entitlement and tenancy configuration, cloud and self-hosted
  • IAM and AI exfiltration paths
  • Agent permissions, approval gates, identity
  • Declared posture against the running system
  • Logging, retention and gateway posture

Referred out — and stated in the report

  • Runtime prompt-injection defense
  • Output filtering and DLP
  • Adversarial red-teaming
  • Anomaly detection
  • Whether a declared control is enforced at runtime

When these matter, the report says so — as recommendations, never as findings we didn’t verify.

Start with a conversation about your stack. Tell us what you have shipped and we will tell you which engagement fits — the design review, the posture assessment, or neither. Scoping costs nothing.
support@skulksec.com