Give your agents
a card
for real work.
You issue a KIFF Card to a named agent. It says which actions the agent may take, under what conditions, and how much. KIFF checks each proposal before your system runs the action, keeps the balance, and lets you revoke the card at any time.
A card narrows actions your domain and permissions already allow. It cannot grant an action on its own. KIFF authorizes; your system executes.
One holder. Separate cards. Give each job its own card. Change or revoke it without touching the others.
You decide what it may do. The card carries that decision.
When an action requires a card, the agent must present one. The card narrows existing permissions. It never grants new ones.
Name the holder. Set actions, conditions, ceiling, window and expiry.
Each authorization draws before your system runs the action.
See the ceiling, drawn amount and remaining authority.
Draws already made still count; raising the ceiling adds only the difference, and the revision records who made the change.
Take it back. The next action that requires it is refused.
Your agent proposes it. A human still clicks it.
Every proposal enters the same queue: open, skim, agree, click. The agent runs faster; deployment still runs on human throughput.
A credential cannot settle whether an action is authorized now. That takes shared state, permissions, approvals, and cumulative limits.
These are two different mechanisms. A domain approval is one case a person grants or denies, and work resumes on the next proposal. A card's ceiling is cumulative: once it is drawn down, nothing about the next proposal is wrong, so there is no case to approve, an owner has to raise the ceiling before that agent can act again.
Review the exceptions. Let the card clear the routine. allowed work runs · approval cases wait for a grant · a spent ceiling refuses until an owner raises itTen correct decisions can still be a wrong day.
Each check helps. Only the last controls the whole day.
Only the fourth sees the day. There is no approve button: more room is a raised limit, and the change is recorded.
A card is only a card when it counts in one place.
A balance that lived with the agent would reset every time the agent did. Restart it, scale it out, run it from somewhere else, and a ceiling of five a day becomes five per copy. Cloud holds the one balance every run and every machine draws from, together with the state the decision needs. Restarting or scaling the holder does not reset its card; a different holder receives its own card against the same domain.
Issue your first card for one real action.
Choose the holder, an action it already has permission to take, the conditions and a ceiling. Connect Guard where that action runs. KIFF checks the next proposal against the card and records what it drew.
Start with authority for one action. The domain and permissions still decide whether the action itself is legal.
The agent's actor id appears on every proposal and on its card.
Choose the action, allowed states, ceiling, window and expiry.
Guard asks KIFF before your system performs it.
See authorizations, the balance remaining and any refusal in activity.
One seam, in front of the action, in whatever you already run.
Guard connects Agno, LangGraph, OpenAI, Google ADK, Strands, n8n, or your own stack to the same operational domain, the state, actions, authority and evidence a card narrows against. Your coding agent can author that domain directly.
Two places an agent is already acting.
Not a list of markets. These are the two where the action is already being taken without a person, and the total is countable, euros in the first, how many times in the second. Start with one action in one of them.
Open your assistant with a prompt to read llms-full.txt and answer from it.
Give it room to work. Keep the right to take that room back.
Issue a card for an action your agent already has permission to take. See each authorization draw on the balance. Change its ceiling or revoke it when the work changes.
Running on your own infrastructure? The framework is open source →