Skip to content

Trust & security centre

Answer the question before it is asked.

Kestrel holds standing permission to execute actions on employee laptops. For a product like that the security posture is the product, so this page is built to the same standard as the home page and answers with mechanisms rather than assurances.

Everything below describes something implemented. Anything on the roadmap is labelled as roadmap, with a date. Where the honest answer is no — air-gapped deployment, self-hosted inference, a SOC 2 report we do not yet hold — it says no.

SOC 2 Type II
In progress — window open
Penetration test
Annual, summary under NDA
Data residency
US · EU-IE · EU-DE
Air-gapped
Not supported

01

The architecture of restraint

Four things the system cannot do, stated as absent capabilities rather than promised policies.

Last reviewed 2026-07-22 · Security engineering

Kestrel holds standing permission to execute code on employee laptops. That is a serious thing to ask for, so the first section of this page is not what we promise — it is what the system is structurally incapable of. A policy can be changed by whoever holds the admin account. A missing capability cannot.

1. The model cannot emit code

The language model’s only output that reaches the rest of the system is a tool call: one action identifier drawn from Quarry, plus parameters validated against that action’s JSON schema. There is no field in that structure that carries free text to a shell. If the model returns an identifier that does not exist, the call fails schema validation and is logged as a rejected recommendation.

{
  "action": "quarry.printspool.restart",   // must exist in the signed bundle
  "parameters": { "clear_queue": true },   // validated against the action schema
  "rationale": "...",                      // stored verbatim, never executed
  "confidence": 0.94
}
The complete shape of what a model may produce. Anything else is a validation failure, recorded in Flightlog and never executed.

2. The authorization decision is deterministic code

Creance — the autonomy engine — is plain, testable, reviewable logic with no model in its path. It takes the proposed action, the device, the resolved policy and the current time, and returns one of four outcomes. The same inputs always produce the same outcome. It is the artifact we expect your security team, our auditors and our insurer to read, and we will hand you the test suite.

NOTE
A model may recommend. Only Creance authorizes. In the console these two are deliberately styled differently — model output is always violet and labelled Model reasoning, policy decisions never are — so an administrator is never uncertain which one produced a sentence.

3. The agent refuses anything not in its own signed bundle

The cloud sends Talon an action identifier. It cannot send an action body. Talon verifies the identifier against the Quarry bundle installed on that machine, whose signature it checks against a pinned certificate chain at load time. If the identifier is absent or the signature does not verify, the agent refuses, reports, and continues running. A compromised control plane cannot introduce a new capability to an endpoint; it can only ask for capabilities that are already there and already authorized.

4. Nothing is autonomous by default

Every tenant, every device group, every action starts Hooded (observe only). Autonomy is granted explicitly, per action, per risk tier, per device group, per time window. It is never inherited from a parent group and never enabled by an upgrade, a migration or a support action. There is no “enable all” control, in the UI or the API.

02

Data handling

Exactly what Talon collects, exactly what it does not, retention per class, and what is redacted before anything reaches a model provider.

Last reviewed 2026-07-22 · Security engineering

What Talon collects

  • Running process list — image name, PID, parent, CPU and memory, signature status. Not command-line arguments, which routinely contain credentials.
  • Service and daemon states, start type, last exit code, and dependency status.
  • Windows Event Log slices scoped to System, Application and the specific provider relevant to an open incident. Time-bounded to the incident window.
  • Disk capacity and free space per volume, memory pressure, uptime, and thermal state.
  • Installed software inventory: name, version, publisher, install date.
  • Network adapter state: adapter presence, link status, IP configuration, DNS servers, default route, VPN tunnel state.
  • Recent change events: package installs, driver updates, OS patch history, and Kestrel’s own prior actions on the device.
  • Hardware and OS identity: model, serial, OS build, architecture, domain or MDM enrollment state.

What Talon does not collect

This list is enforced by what the agent implements, not by a configuration setting. There is no collector for any of it.

  • Keystrokes. There is no keyboard hook.
  • Screen contents. There is no capture path, and no remote-view feature.
  • File contents. Talon reads file metadata for diagnostics — size, timestamp, path — and never the bytes.
  • Browser history, bookmarks, cookies, or stored credentials.
  • Clipboard contents.
  • Microphone or camera. The agent requests no such permission and holds no such entitlement, which is verifiable in the notarised macOS bundle and the Windows manifest.
  • Personal document metadata outside diagnostic scope. The agent does not enumerate user home directories.
  • Geolocation beyond the network egress region already visible to your own infrastructure.

Retention

Data classDefault retentionConfigurableWhere
Bells telemetry30 daysYes, 7–180 daysRegional Postgres
Frozen observation snapshotsLife of the Flightlog entryFollows audit retentionObject store, encrypted
Flightlog audit records1 year (Fleet), 90 days (Flight)Yes, up to 7 yearsClickHouse, append-only
Ticket content90 days after resolutionYes, or zero-retention modeRegional Postgres
Model prompts and completionsStored in Flightlog verbatim; not retained by the providerFollows audit retentionClickHouse
Device inventoryCurrent state plus 12 months of diffsYesRegional Postgres

Data residency

Tenant data is pinned to one region at creation and does not move. Available: us-east, eu-west (Ireland), and eu-central (Frankfurt). ap-southeast is on the roadmap for Q1 2027 and is not available today — if you need it now, we are not the right vendor yet and would rather say so.

What leaves your region for the model provider

Diagnosis runs against Claude via the Anthropic API. Before any payload leaves our infrastructure it passes through a redaction stage we call the scrub pass, which runs on every field without exception and cannot be disabled per-tenant.

  • Usernames and email addresses are replaced with stable per-tenant pseudonyms. The mapping never leaves your region.
  • Hostnames are pseudonymised while preserving their naming-convention shape, because the shape is diagnostically useful and the name is not.
  • IP addresses, MAC addresses and serial numbers are replaced with stable tokens.
  • Anything matching credential, key, token or connection-string patterns is dropped rather than tokenised — a redacted secret is still a secret in a log.
  • Free-text ticket bodies are passed through, because the requester’s own words are the highest-value diagnostic signal. Zero-retention mode is available if your policy forbids this, at a measurable cost to diagnosis quality that we will quantify for your fleet.
LIMIT
We do not currently offer a self-hosted or on-premise model deployment. If your policy forbids any inference outside your own infrastructure, Kestrel is not usable for you today. We would rather you learn that on this page than in week six of a procurement cycle.

03

Encryption & key management

mTLS everywhere, per-device certificates issued at enrollment, KMS-backed key hierarchy, and what happens on compromise.

Last reviewed 2026-07-15 · Security engineering

In transit

  • Agent to cloud: gRPC over mutual TLS 1.3. The agent presents a per-device client certificate issued at enrollment; the cloud presents a certificate pinned to our intermediate. Both sides verify. There is no fallback to server-only TLS.
  • Layered on the mTLS channel, a short-lived session token scoped to one device and one tenant, valid 15 minutes, refreshed over the same authenticated channel.
  • Browser to cloud: TLS 1.3, HSTS with preload, and no support for TLS 1.1 or below.
  • Cloud to your ticketing system: TLS 1.2 minimum, certificate validation enforced, no option to disable it.

At rest

  • AES-256-GCM for all stored data, on managed storage with encryption enabled at the volume layer as well.
  • Connector credentials use envelope encryption: a per-tenant data key wrapped by a KMS customer master key. Plaintext data keys exist only in process memory during a call.
  • Connector credentials are never returned by any API response, never rendered back into the UI after save, and are scrubbed from application logs by a filter with its own test suite.

Key hierarchy and rotation

KeyBacked byRotationOn compromise
Tenant data keysKMS CMK, per tenantAnnual, automaticRe-wrap and re-encrypt; no downtime
Device client certificatesKestrel intermediate CA90 days, automatic renewalRevoked via CRL and OCSP; device must re-enrol
Quarry bundle signing keyHSM, offline rootIntermediate annually, root at 10 yearsBundle pinned chain rotated; agents refuse the old chain
Talon binary signingAuthenticode + Apple notarisationPer certificate lifetimeCertificate revoked; Mews forces update
Session tokensDerived, not stored15 minutesExpire on their own

De-enrollment and compromise

When a device is de-enrolled, its certificate is revoked immediately and published to the CRL and OCSP responder. The agent, if still running, receives a stand-down over the independent Recall channel and stops acting. Telemetry stops. Historical Flightlog entries for that device are retained, because deleting the audit record of a device you just removed is exactly backwards.

If you believe a device certificate is compromised, revocation is a single call and is effective on the next connection attempt — under 30 seconds in practice. A revoked certificate cannot be used to enrol a new device; enrollment requires a separate, single-use Manning token.

04

The Quarry review pipeline

Every remediation action is authored as code, peer-reviewed by a security engineer, sandbox-tested, tiered, signed and versioned. The manifest schema is published.

Last reviewed 2026-07-28 · Security engineering

Quarry is the entire vocabulary of things Kestrel can do to a machine. Publishing our internal review process for it is unusual. We do it because the process is the control, and a control you cannot inspect is a control you have to take on faith.

The gate, in order

  • Authored as code in the Quarry repository, with a declarative manifest. Never a script pasted into a console.
  • Peer review by a named security engineer, who is not the author, and who has an unconditional veto. CODEOWNERS enforces it.
  • Sandbox fleet: executed against a dedicated fleet spanning every supported OS build, including deliberately broken machines. Rollback is exercised on every run, not just the failure runs.
  • Risk tier assigned from observed blast radius, not from author intent.
  • Reversibility declared with a rollback procedure that has been tested. An action cannot be marked reversible without a rollback that ran.
  • Signed and versioned into a bundle. Bundles are immutable; a fix is a new version, never an edit.
  • Staged release through the Quarry channel, which is separate from the Talon binary channel so a remediation fix does not require a fleet-wide agent update.

The manifest schema

This is the real shape. Every field is mandatory except preconditions. The reference published in the docs is generated from these manifests at build time — there is one source, and hand-editing the reference fails CI.

id: quarry.printspool.restart
version: 4.2.0
platforms: [windows]
risk_tier: 0
reversible: true
rollback:
  procedure: restore-service-state
  tested_against: [win10-22h2, win11-23h2, win11-24h2, ws2019, ws2022]
requires_privilege: elevated
privilege_scope: single-call          # escalate, act, drop — in one function
max_duration_seconds: 60
parameters:
  clear_queue:
    type: boolean
    default: true
    description: Delete queued jobs in the spool directory before restart.
preconditions:
  - service_exists: Spooler
  - device_health: [healthy, degraded]
verification:
  - service_state: {name: Spooler, expect: running}
  - test_print: optional
review:
  author: <redacted>
  security_reviewer: <redacted>        # never the author
  sandbox_run: 2026-07-19T09:14:22Z
  signature: sha256:9f2b1c7ae04d…c81a
quarry/manifests/printspool.restart.yaml — abridged.

Risk tiers

TierMeaningExampleMax autonomy available
Tier 0Read-only or trivially reversiblequarry.smb.credential.refreshUnattended
Tier 1Reversible service-level changequarry.printspool.restartUnattended
Tier 2System change with a tested rollbackquarry.driver.rollbackUnattended, explicit grant only
Tier 3High blast radius or irreversiblequarry.disk.partition.resizeApproval required, always
INVARIANT
An action with reversible: false can never be promoted above approval-required, regardless of its success rate. This is enforced in the Creance data model, not in the policy UI — there is no API call that produces that configuration.

05

Autonomy, control & Recall

How Creance is scoped, how autonomy is earned with evidence, and the kill switch that works when everything else does not.

Last reviewed 2026-07-22 · Security engineering

What a rule can be scoped by

  • Action identifier, or an action category, or a risk tier.
  • Device group — static membership, or dynamic by OS, version, tag, directory OU, location or check-in recency.
  • Reversibility requirement.
  • Time window, evaluated in the device’s local timezone, not the tenant’s.
  • Rate limits per device, per group, per hour and per day.
  • Device health preconditions.
  • User context — the exclusion of executive or VIP groups is a first-class field, because every enterprise asks for it.
  • Maintenance-window awareness.
  • Required approver role, for approval-gated outcomes.

Precedence

Deny always wins. More-specific scope beats less-specific. The resolution order is displayed in the policy UI on every rule, along with which other rules it interacts with. Silent precedence is how security policy interfaces cause incidents, so we show it whether or not anyone asks.

Earning autonomy with evidence

Autonomy is not a switch you flip on day one. An action accumulates a record under human approval; when that record is strong enough, the console proposes a scoped promotion with the evidence attached: “this action ran 214 times under approval with a 100% success rate and zero rollbacks — promote to unattended for Standard Laptops, business hours?” You accept a specific scope, not a general permission. Before saving, the simulator replays your last 30 days of Flightlog against the draft policy and shows exactly what would have changed.

Recall — the kill switch

Recall stands every agent down. It is reachable in one click from every screen in the console, and it is deliberately not behind a settings page or a “danger zone” accordion. Confirmation requires typing the word RECALL and shows the blast radius first: how many devices, how many actions in flight.

  • Scope: global, per tenant, per device group, or per device.
  • Effect: every agent in scope stops acting within 5 seconds. In-flight multi-step actions halt and roll back to their last checkpoint.
  • Telemetry continues. You do not lose visibility at the moment you most want it.
  • Independence: the stand-down travels on a channel separate from the orchestration path, with its own endpoint, its own credentials and its own health. Recall works when Stoop is down. We verify this in staging by taking orchestration fully offline before every release, and the test is a release blocker.
  • Agents that are offline when Recall fires receive the stand-down as the first message on reconnect, before any work is dispatched to them.
  • Recall is itself an audited action: who, when, from where, what scope, and how many devices acknowledged.

06

Compliance

SOC 2 status stated honestly with dates, control mapping, GDPR posture, sub-processors, pen-test cadence and disclosure policy.

Last reviewed 2026-07-30 · Security engineering

STATUS
SOC 2 Type II — in progress. Controls implemented, observation window open since 12 April 2026. Target report date: Q1 2027. We hold no SOC 2 report today and we will not display a badge until an auditor issues one. If a vendor shows you a trust badge without a report date, ask them for the date.

Control mapping

Trust Services criterionImplemented controlEvidence source
CC6.1 Logical accessSSO via WorkOS, SCIM deprovisioning, role-based access with an auditor role that reaches Flightlog onlyAccess review export
CC6.6 Boundary protectionmTLS with per-device certificates; no inbound listener on the agentCertificate inventory, network policy
CC6.7 Data in transitTLS 1.3 everywhere, HSTS preload, no downgrade pathTLS scan, quarterly
CC7.2 MonitoringFlightlog append-only with hash chaining; SIEM exportIntegrity verification report
CC7.3 Incident responseDocumented severities and notification SLAs, tested quarterlyTabletop exercise records
CC8.1 Change managementCODEOWNERS review, signed releases, staged rollout with automatic rollbackRelease records, signing logs
A1.2 AvailabilityIndependent status page, health-probe drivenUptime history
P1 / GDPR Art. 32Scrub pass before egress, regional pinning, retention per data classRedaction test suite

GDPR and CCPA

  • Kestrel is a processor. You are the controller for device and ticket data.
  • A DPA is available and is signed at contract, not on request after the fact.
  • Standard Contractual Clauses for transfers out of the EEA, with the transfer impact assessment provided.
  • Data subject requests: deletion and export within 30 days, with the exception of audit records under an active legal hold, which is itself an audited state.
  • Sub-processor list below is generated from a single source file that also feeds the DPA appendix, so the two cannot disagree. Change notification is 30 days in advance, by email subscription.

Testing

ActivityCadenceByAvailable to customers
External penetration testAnnual, plus on major architecture changeThird-party firmSummary letter, under NDA
Agent-specific red teamAnnualThird-party firmSummary letter, under NDA
Dependency and container scanningEvery buildAutomatedOn request
Quarry action reviewEvery action, every versionNamed security engineerProcess published above
Recall independence testEvery release, as a blockerAutomated in stagingResult in release notes

Vulnerability disclosure

security@kestrel.io is monitored by a human, and /.well-known/security.txt is served on every Kestrel domain. We acknowledge within one business day, agree a disclosure timeline with you, and we do not use legal threats against good-faith researchers. There is no bounty programme yet; we say so rather than implying one.

Sub-processors

Generated from content/subprocessors, the same source that produces the DPA appendix, so the two cannot disagree. Subscribe at security@kestrel.io for 30-day change notice.

Sub-processorPurposeRegionDPA
Amazon Web ServicesPrimary infrastructure, storage, KMSUS, IE, DEsigned
AnthropicModel inference for diagnosis (Claude)USsigned
ClickHouse CloudFlightlog audit storeUS, EUsigned
WorkOSSSO, directory sync, audit of auth eventsUSsigned
StripeBilling and payment processingUSsigned
Temporal CloudDurable orchestration stateUS, EUsigned
CloudflareCDN, DDoS protection, WAF for web surfacesGlobal edgesigned

07

Shared responsibility

What Kestrel secures, and what you must configure. Enterprise reviewers look for this table specifically.

Last reviewed 2026-07-15 · Security engineering

AreaKestrel is responsible forYou are responsible for
IdentityAuthenticating users, enforcing role permissions, session lifetime, SCIM deprovisioningYour IdP configuration, who you grant policy_admin, and reviewing access
Autonomy policyEvaluating policy deterministically and identically every time; showing precedence; refusing invalid configurationsDeciding what Kestrel may do unattended, and to which devices
Device groupsResolving effective policy correctly and warning before a membership change alters autonomy scopeGroup membership, and reading the warning
Endpoint agentSigning, notarisation, sandboxing, privilege drop-back, rollback, update integrityDeploying Talon, MDM/TCC pre-approval, and pinning a version if your change process needs it
Connector credentialsEnvelope encryption, never rendering them back, scrubbing them from logsCreating a least-privilege service account rather than using a personal admin login
Ticket dataEncryption, retention enforcement, redaction before model egressWhat your users put in tickets, and choosing zero-retention if your policy requires it
AuditAppend-only storage, hash chaining, integrity verification, exportRetention period, legal holds, and reviewing the record
AvailabilityPlatform uptime, independent status page, Recall independenceNetwork egress to our endpoints, and your own change windows
Incident responseDetecting, containing and notifying per the SLAs belowKeeping your security contact current, and acting on notification

08

Incident response

Severity definitions, notification SLAs, escalation path, and the post-incident commitment.

Last reviewed 2026-07-15 · Security engineering

SeverityDefinitionNotify you withinPost-incident report
SEV-1Confirmed unauthorised access to customer data, or unauthorised action executed on customer endpoints4 hours of confirmationWithin 5 business days, unconditionally
SEV-2Credible indication of compromise, or a defect that caused an unintended action on a customer device24 hoursWithin 10 business days
SEV-3Vulnerability with no evidence of exploitation, or a degradation affecting autonomy decisions3 business daysOn request
SEV-4Vulnerability with no customer impactNext release notesNo

What we will tell you

  • What happened, in plain language, including what we do not yet know.
  • Which of your devices, tenants and data classes were in scope — specifically, from Flightlog, not estimated.
  • What actions were executed, by whom or by what, with the authorizing policy version.
  • What we did to contain it, and at what time.
  • What you need to do, if anything.

A first notification will not be delayed to make it complete. We would rather send you an incomplete SEV-1 notice inside four hours and follow it than a tidy one on day three.

Escalation

Your named security contact is notified by email and by the webhook you configure. For SEV-1, a human calls. You may escalate at any time to security@kestrel.io, which pages the on-call security engineer directly and does not route through support.

09

Document shelf

Self-serve access to the artifacts a vendor review actually needs, including a pre-filled CAIQ-Lite.

Last reviewed 2026-07-30 · Security engineering

Everything a security reviewer normally has to email for. The CAIQ-Lite is the highest-leverage item on this page: it is pre-filled, answer by answer, against what is actually implemented, and it saves your team roughly a week.

  • Security whitepaper

    available

    Architecture, threat model, and the four invariants in detail.

    no gate — direct download

  • CAIQ-Lite, pre-filled

    available

    Cross-checked line by line against implementation by a security engineer.

    no gate — direct download

  • Architecture whitepaper

    available

    Data flow diagrams, trust boundaries, and the agent privilege model.

    no gate — direct download

  • Data Processing Agreement

    available

    With the sub-processor appendix generated from the same source as this page.

    no gate — direct download

  • Penetration test summary

    available

    Most recent third-party test. Findings and remediation status.

    click-through NDA required

  • SOC 2 Type II report

    pending

    Observation window open since 12 April 2026. Target Q1 2027.

    click-through NDA required

  • Insurance certificate

    available

    Technology E&O and cyber liability, with the endpoint-action endorsement.

    click-through NDA required

10

The hostile questions

The questions a security lead actually asks, answered directly, including where the answer is “not yet”.

Last reviewed 2026-07-28 · Security engineering

What happens if your AI decides to delete System32?
It cannot. There is no delete-arbitrary-path action in Quarry, and Quarry is the entire vocabulary — the model selects an identifier from that list and can produce nothing else. The nearest thing that exists is quarry.disk.logrotate, which truncates files by age inside a hard-coded allow-list of log directories, will not follow symlinks, and refuses any path outside the list. If you want to check, the full library is published and generated from the signed manifests.
What if your cloud is breached — can an attacker run commands on my fleet?
Walk the blast radius. An attacker with full control of our control plane can send action identifiers and parameters. They cannot send an action body, because Talon only executes from its own locally-verified signed bundle. They cannot introduce a new capability, because bundle signatures are checked against a pinned chain rooted in an offline HSM key that is not present in the control plane. They cannot exceed what you authorized, because Creance policy is evaluated per tenant and irreversible actions cannot be unattended at any setting. And you can Recall the entire fleet in one click over a channel that does not depend on the compromised path.

What they could do is trigger authorized, reversible, tier-appropriate actions on devices inside your policy — restart a service you already let us restart. That is the real, bounded worst case, and we would rather state it than claim there is none.
Can I run it fully air-gapped?
No. Not today, and not honestly for at least a year. Diagnosis depends on a hosted model, the Quarry channel needs to reach the update service, and Flightlog is a cloud store. An air-gapped deployment would be a different product. If you need it, tell us, and we will tell you truthfully where it sits on the roadmap — which today is nowhere.
Does Talon give you remote access to my machines?
No. There is no remote shell, no remote desktop, no file browser and no interactive session in the product. The agent exposes no inbound listener; it makes one outbound connection. Support cannot connect to your endpoint, and there is no break-glass path that changes this — which does mean some support cases require you to run a diagnostics bundle for us.
Can your support staff see my ticket contents?
Only with explicit, time-boxed, per-tenant access that you grant, and every access is written to your Flightlog with the engineer’s identity. We do not have a standing internal role that can read customer ticket data. Access grants expire automatically; there is no permanent grant option.
What stops a bad Quarry action from breaking 6,000 machines at once?
Four things, in order: staged rollout of the bundle with an automatic halt on a health-check regression; per-group and per-hour rate limits in Creance that you set; the tested rollback that every action must declare before it ships; and Recall. In staging we deliberately ship a known-bad action against the sandbox fleet before each release to confirm the rollout halts. If the halt does not fire, the release does not ship.
How do I prove to an auditor what happened?
Flightlog holds every stage of every decision, append-only, with a hash chain you can verify yourself from the console. There is an auditor role that reaches Flightlog and nothing else. Evidence packs export every autonomous execution in a date range with the authorizing policy version as it existed at that moment, not as it exists now — which is the requirement most audit interfaces get wrong.
What is your bus factor on the signing key?
The root is offline in an HSM under split custody, three of five. Intermediates are HSM-backed and rotated annually. Losing any one individual does not lose signing capability, and losing the control plane does not expose the root. This is the question we get least often from reviewers and it is one of the better ones.

Still have a question this page did not answer?

Send it to security@kestrel.io. If it is a question a reviewer would reasonably ask, the answer gets added to this page rather than emailed to one person — which is the entire point of publishing it.

security@kestrel.io