Skip to main content
Non-MCP tool callers — including containerized Codex CLI deployments — use POST /api/v1/evaluate as their enforcement gate. Place evaluate before local tool dispatch for tools routed through this wrapper or container integration. Sector8 returns the verdict. Your application owns honoring that decision at dispatch time before any side effect starts. This path uses the same admission and policy contract as the MCP connector. Coverage applies only to tool calls your runtime routes through evaluate or the Sector8 adapter.
Unconnected tools, direct OS dispatch, and chat or completion content that never becomes a governed tool call are not automatically covered.
The container pattern can keep the base image unchanged and add Sector8 in your approved image layer. Your runtime still needs an evaluate-before-dispatch hook that enforces the decision.

Prerequisites

  • A Sector8 API key and client ID
  • A container build or runtime path that you control
  • A place in the tool caller where you can block dispatch on non-ALLOW decisions
  • pip available in the container if you use the Python adapter

Step 1 — Add Sector8 to the container image

Install the SDK once in your approved base image:
Do not bake credentials into the image. Inject them at runtime via the environment.

Step 2 — Set required environment variables

Step 3 — Place evaluate before dispatch

For tools routed through this integration, replace direct tool dispatch with an evaluate-before-dispatch hook. Sector8 decides; your runtime enforces. Honor the decision exactly like this:
Optional adapter helper for the same routed path:
If you use the adapter, still ensure missing, unknown, and evaluate failures do not dispatch. Sector8 returns the verdict; your application owns enforcement at the dispatch boundary.
Fail closed if evaluate fails, times out, or returns an unknown decision. Do not execute the proposed action by default. Fail-closed applies to tools routed through this integration; it does not stop actions on bypassed or unconfigured tool paths.

Runtime semantics

Success state

When correctly wired:
  • Your runtime calls /api/v1/evaluate before local dispatch for tools routed through this integration
  • Your application honors the decision at the dispatch boundary
  • ALLOW actions may execute
  • DENY actions are blocked before execution
  • Unknown, missing, or failed evaluate results fail closed and do not execute
  • Decision artifacts include reason_code, decision_trace_id, evidence_hash, and policy_version_id

Evaluation response schema

Exact reason_code and policy_version_id values depend on your active policy and environment. See Evaluate for the full contract.

Example — blocked call

Example — allowed call

Gotchas

  • session_id is required for rate limiting. A missing or static session_id will cause all requests to share a rate limit bucket.
  • owned_objects must list what the caller actually owns. BOLA checks compare object_id against this list — an empty list means every object-level request is denied.
  • Do not cache ALLOW decisions. Evaluate every call independently. A cached ALLOW is not a security property.
  • Do not treat adapter install as full coverage. Only tool calls that go through evaluate or the adapter are governed.

Honest scope

This path governs tool calls that route through evaluate or the adapter. It does not govern:
  • inline completions or chat content that never becomes a governed tool call
  • tools the runtime can still dispatch without calling evaluate
  • bypassed or unconfigured execution paths
For MCP-connected Claude Code tooling, see the Guard MCP Server. For the shared decision contract, see Evaluate and Guardrails.