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 the CLI or GitHub today; chat and web approvals are planned.
Every action signed
The run log records who did what: which agent proposed it, which human approved it, which digest shipped.