Trust & AI safety

What the AI is allowed to do is a written list.

Karatry's assistant reads your workspace and drafts your work. Which operations it can reach at all isn't a matter of prompting or good behaviour — it can only call tools somebody wrote and registered, every operation in the product carries a written decision the build won't let you skip, and everything that moves money or stock is stopped behind a click you have to make. Here is that architecture, in plain terms, with every number counted from the code rather than remembered.

Where these numbers come from. Every figure on this page was counted from Karatry's own source on 22 October 2026, at commit 5d72509. They are the real counts, not rounded for effect — and they will drift as the product grows, which is exactly why the date and the commit are printed here rather than left off. If a number stops matching the product, tell us and we'll recount the page.

The list

Every operation in Karatry is classified. Most say no.

An ERP is a few hundred operations — void a payment, delete a customer, reprice a catalog, ship an order. The only useful question about an AI feature is which of those it can reach. Ours has an answer, because the answer is written down in two places somebody has to edit by hand: the list of tools that exist at all, and a decision recorded against every single operation.

245 operations, decided one at a time

Karatry has 245 server operations — the functions behind the buttons in the product. Each one carries an explicit line recording whether the assistant may reach it: 217 are blocked, 13 are exempt — sign-in, sessions and multi-factor, flows that are never an AI surface in any tier — and 15 are reachable. On every build, a test reads the operations straight off disk and fails if a single one is missing from that file, or if the file still names one that has been removed. So a new operation cannot arrive AI-callable by accident: someone has to write the decision down before it merges, and the standing instruction written into the file is to write blocked.

The count that matters is not the 15. Seven of those fifteen are reachable only as proposals that a person approves on a card: the six money and stock ones — record a payment, ship an order, raise an invoice, confirm or create a sales order, register a piece into stock — and adding components to a style's parts list, which rebuilds the style's cost. They cannot execute inside a conversation.

  • 217 blocked — deletes, refunds, credit notes, voids, billing, catalog repricing, platform administration
  • 13 exempt — sign-in, sessions, MFA: never exposed to the assistant at all
  • 15 reachable, of which 7 need your click: 6 money or stock, and 1 that rebuilds a style's cost
  • No generic "run any function" call exists — the assistant can only invoke tools a person wrote and registered, 56 of them today
And how the data itself is isolated →
Server operations, classified
counted 22 Oct 2026
Total classified245
Blocked from the AI217
Auth / session / MFA13
Reachable by a tool15
…of which money, stock or style cost7 — your click only
What runs, and what waits

Three tiers. Only two of them move on their own.

Every registered tool has to declare a blast-radius tier, and the tier is mandatory — there is no default to fall back on. The tier, not the model's judgement, decides whether anything actually happens.

Reads and reversible drafts run. Money and stock never do.

Karatry registers 56 tools: forty-one read-only, eight reversible internal writes, and seven that need a person's approval — six that touch money or stock, and one that adds components to a style's parts list and rebuilds its cost. In an ordinary conversation the read tools and the reversible-write tools execute directly — that's what makes the assistant useful — and every write of either kind lands in the same audit trail as a human's, attributed to the person who asked for it. The seven approval tools do not execute in a conversation. Not on any turn, not under any prompt: the code returns a card instead of running them.

  • Read (41) — a business snapshot; low stock and stock coverage by style; AR, AP, aging, collections and credit exposure; invoices, sales orders and purchase orders; work orders, the production queue, outwork and repairs; vendor summaries, consignments and memo exposure; metal position, prices and pool balances; piece history, pieces by status and barcode lookup; customer profiles, pieces and interactions; product, customer, vendor and component lookups; a style's parts list and costing; realized margin for a period; and its own saved notes and dossiers
  • Reversible write (8) — log an interaction, create a customer, vendor, style, stock item or repair record, save a remembered fact, append a note to a dossier. Internal, undoable, no money and nothing sent outside
  • Human approval (7) — confirm a sales order, record a payment, raise an invoice, ship an order, create a sales order, register a piece into stock, add components to a style's parts list (which rebuilds its cost)
  • Each tool is bounded by your role before it runs, and a tool that wraps one of the product's operations has that operation check the same permission again
Registered tools by tier
56 total
Read-only41 — run directly
Reversible writes8 — run, and audited
Money, stock or style cost7 — card only
Tools with no declared tierNone — it won't compile
Money tools that self-executeZero

And when the turn has read something you didn't write

There is one case where even a reversible write shouldn't be trusted: a turn in which the assistant has ingested business data — a document you uploaded, the free text on a record, the result of an action just approved. Text like that can carry instructions aimed at the model. Karatry detects that condition on the server, from the message envelope it built itself, before the first model round; it is set once and never re-read, so nothing the model or a tool says later can switch it off. While it holds, the eight reversible-write tools stop running directly and stage for approval too — so on those turns, nothing writes without a click either.

  • Detected from the server-built envelope, not from anything the model says
  • Uploaded attachments count as untrusted, so any turn carrying one is treated the same way
  • The downgrade is deterministic — the same input always produces the same decision
  • The card you then see says plainly that it was held for approval
On a turn that ingested business data
automatic
Read toolsStill run
Reversible writesHeld for approval
Money or stockHeld, as always
Decided byThe server, before round one
Can the model clear it?No
The approval card

The card is a signed instruction, not a screenshot.

When the assistant proposes something that moves money or stock, you get a card describing exactly what will happen. Behind that card is a token — and the token, not the conversation, is what executes.

What you approve is what runs

The token is signed with HMAC-SHA256 against a server-side secret, and it carries the exact tool and the exact validated input you are approving. Where a tool has to resolve your request against the database first — which customer, which style, which piece — that resolution happens before the token is signed, and the summary you read is generated from the same resolved object that gets signed. There is no path where the card describes one thing and the token means another. When you approve, the endpoint re-checks the signature, re-checks your role, and re-validates the input against the tool's schema before anything is written.

Three independent limits sit on that token, and a card has to satisfy all three:

  • Ten minutes. The token carries an expiry ten minutes from issue and is refused after it. A card left open over lunch is already dead.
  • One use. Approving records the token's id in the database under a unique constraint, so replaying an approved card fails outright. Nothing runs twice.
  • One workspace. The token records the workspace it was minted in and is refused unless that still matches yours — so if an account is moved between workspaces inside those ten minutes, the old card cannot be redeemed in the new one.

Declining is recorded too: the decline and the token's consumption commit in a single transaction, so a rejected proposal leaves an audit row rather than leaving no trace at all.

Anatomy of one approval token
per proposal
SignatureHMAC-SHA256
Valid for10 minutes
Times redeemableOnce
Redeemable inOnly the issuing workspace
Re-checked on approvalSignature, role, input
The spend brake

A runaway loop costs you a day, not a quarter.

An assistant that can call tools can call a great many of them. Karatry meters model calls per workspace per day and stops when the day's budget is spent, so a runaway loop is capped at one day's usage.

One counter per workspace, reset every day

Every workspace gets a daily fair-use token ceiling, and a tighter one during the free trial on Karatry's own AI key — trial AI is never billed, so its downside is bounded separately. On Karatry's key, prompt-cache tokens count toward the ceiling at their price relative to an ordinary input token. The ceiling is a brake, not your plan's allowance: the Karatry AI each seat includes is a monthly amount, set out on the pricing page. Embeddings, the background indexing that lets search understand what you meant rather than what you typed, run against their own separate daily counter, so a runaway re-index can never eat the conversation budget. Both reset at midnight UTC. When a ceiling is reached the assistant says so plainly, tells you it resets tomorrow, and nothing else in Karatry stops working.

  • A daily fair-use token ceiling on every workspace, and a tighter one while you're on the free trial on our key — trial AI is never billed
  • Embeddings on their own daily counter, so the two can't starve each other
  • A workspace can carry its own ceiling that overrides the default — it's a lever on our side, not a switch in your settings, so ask if your shop needs more headroom
  • Every assistant and AI-text call is written to an append-only usage ledger — provider, model, tokens, estimated cost — including ones that error out, so partial spend is still recorded
Daily ceilings on the platform key
per workspace
Tokens, subscribedDaily fair-use ceiling
Tokens, on trialTighter — never billed
EmbeddingsOwn daily counter
Counter resetsMidnight UTC
What happens at the ceilingAI pauses. Karatry doesn't.
Bring your own key

Or run the AI on your own account entirely.

You don't have to use ours. Point Karatry at your own provider with your own key, and the calls go out on your bill, at your provider's price, with no markup from us in between.

Your key, your provider, no Karatry charge

Karatry works with Anthropic, OpenAI, Google, or any OpenAI-compatible gateway. Your key is stored encrypted at rest with AES-256-GCM and never displayed back to you — the settings screen shows a masked hint of its last four characters and nothing more. Karatry still writes those calls to your own usage ledger so you can see the volume, but books them at zero cost, because you already paid your provider for them.

Three of the gates that apply to our key don't apply to yours. The tighter trial ceiling, the stop that comes with a read-only workspace, and the monthly pause an annual plan reaches once its included Karatry AI is used all check whether you have a key of your own, and skip if you do — bringing your own key is free of any Karatry charge on every plan, including a workspace whose trial has ended and gone read-only, and it never counts against the Karatry AI your seats include. That's about the AI budget only: a read-only workspace still can't make new business writes, and the assistant's write tools hit exactly the same block your own screens do. And a workspace with its own key is still metered against a daily ceiling of its own, so the brake stays a brake.

  • Anthropic, OpenAI, Google, or an OpenAI-compatible gateway
  • Stored with AES-256-GCM; shown back only as a masked four-character hint
  • Your calls, your provider's bill — ledgered at zero cost on our side
  • Free on every plan, and it never counts against the Karatry AI your seats include
What a seat includes →
Your own provider key
every plan
Stored asAES-256-GCM, encrypted
Shown back to youMasked hint only
Billed by us at$0 — you paid the provider
Still ledgeredYes, for your visibility
Trial, read-only & allowance AI gatesSkipped for your key
Fair questions

What we are — and aren't — claiming.

Can the assistant move money on its own?

No. The six tools that touch money or stock are approval-tier, and an approval-tier tool never executes inside the conversation — the code returns a card instead of running it. The only route to execution is the approval endpoint, and that endpoint demands a token with a valid signature, an unexpired clock, an unused id, and a matching workspace. Fail any one of the four and nothing runs.

So nothing at all happens without me clicking?

That would be an overstatement, and we'd rather you had the accurate version. Read tools run on their own — that's the point of asking a question. So do the eight reversible internal writes: creating a customer record, logging an interaction, saving a note. They're audited, undoable, and they never touch money, stock, or anything that leaves the building. Money and stock are the line, and that line is absolute.

What stops a prompt hidden in one of my own documents from steering it?

Two things, and neither depends on the model noticing. First, the boundary is what's reachable: no prompt can conjure a tool that isn't registered, and no prompt can make an approval-tier tool self-execute. Second, when a turn has ingested business data or an attachment — exactly the case where a hidden instruction could arrive — the reversible writes are automatically downgraded to the approval rail too. That decision is made by the server before the model's first round, from the envelope the server built, so it isn't something a clever instruction can talk its way out of.

Does the assistant see other businesses' data?

No. Its tools go through the same tenant-scoped data layer and the same role permissions as the screens you use by hand — a tool inherits the permission of the operation it wraps, checked before it runs and again inside the operation. If your role can't do something manually, it can't be done through the assistant either. The security page covers the isolation itself.

What are you deliberately not claiming?

That the model is always right, and that no prompt could ever talk it into proposing something daft. We can't promise either, and a vendor who does is selling you a feeling. What we're claiming is narrower and checkable: the set of operations it can reach is fixed by a list of tools somebody had to write, and no operation reaches the product without a written decision the build refuses to let anyone skip; the ones that move money or stock cannot execute without your click; and the click is bound to a signed, ten-minute, single-use, single-workspace token. The safety is in the reach, not in the model's good judgement.

How do I verify any of this?

Karatry isn't open source, so we're not going to pretend you can go and read the file — which is precisely why this page carries the exact counts, the date they were counted, and the commit they were counted at, instead of adjectives. Ask us a pointed question by email and we'll answer with the code in front of us, or walk through it on a call. And every number here gets recounted from source when the page is revised — it is never copied forward from the previous version.

These numbers will change as Karatry changes. Then what?

The counts will, and this page gets recounted and re-dated when they do. The mechanism won't: a new operation fails the build until someone classifies it, a new tool won't compile without declaring its blast radius, and the tier — not the model — decides whether it can act.

One honest caveat about this page. Counts on a marketing page go stale the moment an engineer merges something, and a stale number is indistinguishable from a made-up one. That's the whole reason this page prints the date and the commit rather than a confident round figure — so you can see how fresh it is and ask us if it isn't. The mechanisms described above don't move; the four numbers do.

Try the assistant on your own books.

30 days of the full product, on your own data, with no credit card and nobody to call first.

Start free — no card →