Software Agents Quickstart
Software-engineering agents are great at creating code, changes, and pull requests — but most teams stop them before operational actions like merging, deploying, running migrations, rotating secrets, or destructive operations. BobSentry is the runtime authorization layer for that boundary: call POST /v1/runtime/evaluate with x-api-key, get ALLOW, REQUIRE_APPROVAL, or BLOCK, then honor the decision in your own execution path. BobSentry does not execute the downstream action.
1. Get a sandbox key
Sign in and open the Sandbox page, click Generate Sandbox Key, then export it:
export BOBSENTRY_SANDBOX_KEY=bsk_your_key_here
2. Evaluate an action
Call the runtime before your agent performs the action. The action field selects the policy; the decision is deterministic.
curl -X POST https://runtime.bobsentry.com/v1/runtime/evaluate \
-H "x-api-key: $BOBSENTRY_SANDBOX_KEY" \
-H "content-type: application/json" \
-d '{
"action": "deploy_production",
"agent_id": "infra-agent",
"action_environment": "PRODUCTION",
"schema_version": "2026-06",
"metadata": { "system": "payments" }
}'Action catalog
Five software-engineering actions ship in the runtime taxonomy today. Each example below is runnable with your sandbox key.
merge_pull_requestALLOWPolicy SE-PR-MERGE-001
Request
{"action":"merge_pull_request","agent_id":"agent_demo",
"metadata":{"repo":"acme/api","branch":"feature/login"}}Response
{"decision":"ALLOW","risk_level":"LOW",
"policy_id":"SE-PR-MERGE-001","approval_required":false,
"approval_status":"NOT_REQUIRED","signature":"ed25519:…"}Why: Merging a reviewed PR into a non-protected branch is low blast radius, so it runs without a human in the loop — but every decision is still logged with signed evidence.
deploy_productionREQUIRE_APPROVALPolicy SE-DEPLOY-001
Request
{"action":"deploy_production","agent_id":"infra-agent",
"action_environment":"PRODUCTION","schema_version":"2026-06",
"metadata":{"system":"payments"}}Response
{"decision":"REQUIRE_APPROVAL","risk_level":"HIGH",
"policy_id":"SE-DEPLOY-001","approval_required":true,
"approval_status":"PENDING","signature":"ed25519:…"}Why: A production deploy has operational impact. BobSentry returns REQUIRE_APPROVAL so the integrator must not deploy yet; a release manager authorizes in the console, then the integrator may proceed.
run_database_migrationREQUIRE_APPROVALPolicy SE-DB-MIGRATION-001
Request
{"action":"run_database_migration","agent_id":"agent_demo",
"metadata":{"database":"prod","migration":"20260624_add_index"}}Response
{"decision":"REQUIRE_APPROVAL","risk_level":"HIGH",
"policy_id":"SE-DB-MIGRATION-001","approval_required":true,
"approval_status":"PENDING","signature":"ed25519:…"}Why: Schema and data migrations can be irreversible, so the action requires human authorization before it is applied to a production database.
rotate_secretREQUIRE_APPROVALPolicy SE-SECRET-ROTATE-001
Request
{"action":"rotate_secret","agent_id":"agent_demo",
"metadata":{"secret_id":"prod/api-key","scope":"production"}}Response
{"decision":"REQUIRE_APPROVAL","risk_level":"HIGH",
"policy_id":"SE-SECRET-ROTATE-001","approval_required":true,
"approval_status":"PENDING","signature":"ed25519:…"}Why: Rotating a live credential can cause outages or lockouts, so it is gated on explicit authorization. Only the secret identifier is recorded — never the value.
delete_repositoryBLOCKPolicy SE-REPO-DELETE-001
Request
{"action":"delete_repository","agent_id":"agent_demo",
"metadata":{"repo":"acme/legacy"}}Response
{"decision":"BLOCK","risk_level":"CRITICAL",
"policy_id":"SE-REPO-DELETE-001","approval_required":false,
"approval_status":"NOT_REQUIRED","signature":"ed25519:…"}Why: Deleting a repository is irreversible loss of source history. It is blocked outright with no automated override path, and a signed denial record is produced.
What happens on REQUIRE_APPROVAL
When a decision is REQUIRE_APPROVAL, the runtime returns approval_status: "PENDING" and opens an approval ticket. Do not execute the downstream mutation. A human authorizes in the BobSentry console; poll GET /v1/runtime/decisions/:decisionId until approval_status is terminal. Evaluation credentials cannot self-approve. ALLOW means the integrator may proceed; BLOCK means stop. See Approval Routing and the Runtime Integration Contract.
Evidence
Every decision returns a decision_id (also the evidence id) plus an Ed25519 signature and a hash-chain digest, so any action your agent takes is independently verifiable. The tenant is derived from your API key on the server. Recent decisions appear in your Sandbox evaluation history.