db \`7MM"""Mq. .g8"""bgd db \`7MN. \`7MF'\`7MM"""YMM
;MM: MM \`MM..dP' \`M ;MM: MMN. M MM \`7
,V^MM. MM ,M9 dM' \` ,V^MM. M YMb M MM d
,M \`MM MMmmdM9 MM ,M \`MM M \`MN. M MMmmMM
AbmmmqMA MM YM. MM. AbmmmqMA M \`MM.M MM Y ,
A' VML MM \`Mb.\`Mb. ,' A' VML M YMM MM ,M
.AMA. .AMMA..JMML. .JMM. \`"bmmmd'.AMA. .AMMA..JML. YM .JMMmmmmMMMGovern as fast as employees build
The risk isn't just Shadow AI. It's the speed.
Employees build and ship AI workflows faster than any review process can keep up. Arcane works as fast as the threat model.
Governance that outpaces development.
Enforce now, watch always, tighten over time. Arcane monitors behavior 24/7, drafts policy changes, and queues meaningful exceptions for approval so security stays in control without turning every workflow into a ticket.
allow research-agent to read drive.files when delegated by an engineering-org user
research-agent attempted drive.files.read 47 times in the last 30 days — all from engineering users. No matching rule. Promoting shadow → active would convert 47 reviews to allows.
permit (
principal in Group::"research-agent",
action == Action::"read",
resource in ResourceType::"drive.files"
) when {
principal.delegated_by.org == "engineering"
};Three calls. Identity to enforcement.
Bind once at boot. Mint per task. Enforce on every call. The whole control plane fits behind three SDK methods.
Bind identity
Arcane composes the user from your IdP, the agent from your registry, and the workload from runtime attestation into a single signed principal.
// At agent boot
const principal = await arcane.bind({
user: req.identity, // verified IdP token
agent: { id: "release-bot", version: "1.2" },
workload: await runtime.attest(),
});
// → { principalId, boundAt, expiresAt }Issue a task-bound grant
Each grant names the task, the resources it covers, and the actions allowed. Short TTLs replace standing access; nothing else carries.
// Per-task grant
const grant = await arcane.issue({
principal,
task: "rotate-staging-keys",
resources: ["aws:iam:role/staging-*", "vault:kv/staging/*"],
actions: ["iam:UpdateAccessKey", "kv:read"],
ttl: "5m",
});
// → { token, exp, jti }Enforce on every call
SDK at the call site, or transparent proxy in front of any service. Same policy, same signed evidence — evaluation happens inline, not out of band.
// Guarded call — policy evaluates before the SDK forwards
await arcane.guard(grant, () =>
aws.iam.updateAccessKey({
UserName: "ci-deploy",
Status: "Inactive",
}),
);
// decision: allow · signed · evidenceId=ev_3f9c…Every decision, in plain view.
The same record that flows to your audit log shows up live — who, what, why, and which rule matched. Filter by agent, task, or outcome.