Introduction

The approval & audit layer for AI agents

Your agents are getting good enough to act — issue refunds, delete records, send email, ship deploys, move money. Eda is the layer that decides whether they’re allowed to. Before a consequential tool call, your agent asks Eda; Eda answers approved, blocked, or pending a human — and writes every decision to an immutable audit log.

import { Eda } from "@eda-holding-inc/sdk";
 
const eda = new Eda({ apiKey: process.env.EDA_API_KEY! });
 
const decision = await eda.check({
  agent: "support-agent",
  action: "refund_customer",
  params: { amount: 120, customerId: "cus_8842" },
});
 
if (decision.status !== "approved") {
  throw new Error(decision.reason); // blocked, or waiting on a human
}
 
await stripe.refunds.create({ charge: "ch_…", amount: 120_00 }); // safe now

New here? The fastest path is Quickstart — a working gate in about two minutes. Or press ⌘K and ask Gideon, our AI assistant, to wire Eda into your exact stack.

Why teams put Eda in front of their agents

How it fits together

Your agent decides to act

An LLM produces a tool call — refund_customer({ amount: 120 }).

Eda checks it first

You call eda.check({ agent, action, params }). Eda evaluates your policies (deterministic, sub-10ms), optionally scores risk with a model, and returns a decision.

The decision routes the action

Approved → run it. Blocked → don’t, and tell the model why. Pending → a human approves or denies in the dashboard; checkAndWait() resolves when they do.

Everything is logged

The action, its parameters, the decision, the policy that matched, and the approver all land in the audit trail — visible in the dashboard.

Pick your path


Eda is built by Eda Holding, Inc. · edahq.com · Dashboard · Questions? Press ⌘K for Gideon.