BobSentry logoBobSentry

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_requestALLOW

Policy 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_APPROVAL

Policy 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_APPROVAL

Policy 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_APPROVAL

Policy 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_repositoryBLOCK

Policy 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.

Software Agents Quickstart | BobSentry Docs | BobSentry