07 / Safe for AI agents
Let agents ship. Keep a human on the button.
Coding agents can write, check and run your workflow. They can't guess their way into prod: a file that doesn't type-check never runs, and anything risky waits for a person.
ship.ks · policyyou decide the line
policy:
agents:
can: check, build, plan, deploy staging
ask: @platform
before: apply, deploy prod, destroy
never: read secrets
# humans follow the same file, minus the leash
agent · pr #412--as agent
$ keepshipping run --as agent
✓ check ship.ks is valid
▸ build sha256:4be1…07 signed
▸ plan +1 ~0 -1 1 destroy
⏸ review waiting on a human
@platform notified, plan attached
nothing applied. agent is free to wait.
Ask a human only when it matters.
A decide step sends the plan to Jev, a typed decision model from TypeSafe AI. It returns one of the answers you defined plus a confidence score, so the checker validates it like any other step. Low-risk, high-confidence changes go through on their own. Everything else waits for a reviewer, with the reason attached.
ship.ks · decidetyped answer + confidence
risk: decide
model: typesafe/jev
ask: "How risky is this plan?"
input: plan.changes
returns: low | medium | high
review: approval
auto: risk is low ≥ 0.95
and plan.destroys == 0
else: ask @platform, show risk.reason
two runs, same file--as agent
# pr #412 · bump replicas 2 → 4
▸ risk low 0.97 1 change, 0 destroys
✓ review auto-approved by policy
# pr #418 · rename database module
▸ risk high 0.91 replaces aws_db_instance.main
⏸ review waiting on @platform
Fine print: Jev answers in milliseconds and only returns the answers you defined, but it can still be wrong. A confidence score is a number, not a promise. You set the threshold, destroys always go to a human, and every decision is logged with its score.
Wrong files don't run
Typed steps and exact error messages give agents something to fix, instead of a failed job to reinterpret.
Approval where it matters
Gate apply, prod or destroy. The reviewer sees the plan and the diff, then approves from chat, CLI or web.
Every action signed
The run log records who did what: which agent proposed it, which human approved it, which digest shipped.