Skip to main content

OpenAI Agents SDK integration for GaaS (Governance as a Service)

Project description

gaas-openai-agents

GaaS (Governance as a Service) integration for the OpenAI Agents SDK.

Every function tool call is governed before it executes: the adapter submits a governance intent to GaaS, and only an APPROVE (or an approved escalation) lets the tool run. A BLOCK verdict raises GovernanceBlockedError out of Runner.run() — the run halts; the error is never converted into text the model can route around.

pip install gaas-openai-agents[openai-agents]

Quickstart

from agents import Agent, Runner, function_tool
from gaas_openai_agents import govern_tools, GaaSGovernanceConfig

@function_tool
def send_email(to: str, subject: str, body: str) -> str:
    """Send an email."""
    ...

config = GaaSGovernanceConfig(api_key="gsk_...", agent_id="my-agent")
agent = Agent(
    name="assistant",
    instructions="You are a helpful assistant.",
    tools=govern_tools([send_email], config=config),
)

result = await Runner.run(agent, "Email the Q3 report to finance@acme.com")

Verdict flow

tool call → GaaS intent → ┌─────────┐
                          │ APPROVE │ → tool executes
                          │ BLOCK   │ → GovernanceBlockedError raised out of Runner.run()
                          │ ESCALATE│ → raises by default; hold-and-poll optional (below)
                          └─────────┘

Only governance blocks halt the run. Errors inside your tool function keep the framework's default behaviour (formatted for the model; the run continues).

Configuration

from gaas_openai_agents import GaaSGovernanceConfig

config = GaaSGovernanceConfig(
    api_url="https://api.gaas.is",    # GaaS API endpoint
    api_key="gsk_...",                # Your API key
    agent_id="my-agent",              # Agent identifier (appears in audit trail)
    block_on_escalate=True,           # Raise GovernanceBlockedError on ESCALATE
    timeout_seconds=5.0,              # Governance check timeout (fail open on timeout)
    sensitivity="INTERNAL",           # Default sensitivity level for tool inputs
    raise_on_governance_error=False,  # Fail open if GaaS API is unreachable
    extra_regulatory_domains=["HIPAA"],   # Additional domains for all intents
    extra_data_categories=["PHI"],        # Additional data categories for all intents
    hold_on_escalate=False,           # Wait for the human decision on ESCALATE
    escalation_poll_seconds=5.0,      # Poll interval while holding
    escalation_max_wait_seconds=600.0,  # Give up (treat as timeout) after this
)

Hold-and-Poll on ESCALATE

With hold_on_escalate=True, an ESCALATE verdict no longer raises immediately. The tool call holds while GaaS routes the escalation to a human reviewer, polling the escalation status until it is decided:

  • approve / modify — the tool executes.
  • deny — raises GovernanceBlockedError with verdict ESCALATE_DENY.
  • timeout — raises GovernanceBlockedError with verdict ESCALATE_TIMEOUT.

hold_on_escalate takes precedence over block_on_escalate. Transient polling errors are retried until the deadline.

Handling blocked runs

from gaas_openai_agents import GovernanceBlockedError

try:
    result = await Runner.run(agent, "wire $250k to the new vendor")
except GovernanceBlockedError as err:
    print(err.verdict)                  # BLOCK / ESCALATE / ESCALATE_DENY / ESCALATE_TIMEOUT
    print(err.decision_id)              # audit reference
    print(err.blocking_policies)        # policy IDs that triggered the block
    print(err.governance_proof_token)   # GPT token ID for the legal audit trail

GovernanceBlockedError subclasses agents.exceptions.AgentsException, so the openai-agents runner propagates it unchanged.

Notes

  • Only FunctionTool instances (e.g. from @function_tool) can be governed. Hosted tools (web search, code interpreter) execute on OpenAI's side and are out of client-side governance reach.
  • Tool metadata (name, description, JSON schema, guardrails, approval config) is preserved by wrapping.
  • Fail-open by default: if the GaaS API is unreachable the tool proceeds. Set raise_on_governance_error=True to fail closed.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gaas_openai_agents-0.1.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gaas_openai_agents-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file gaas_openai_agents-0.1.0.tar.gz.

File metadata

  • Download URL: gaas_openai_agents-0.1.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gaas_openai_agents-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4146ca3f77ce4bb6528814473c0bea008df151827201ee429fcfaeac1ea605fd
MD5 5450ec268a51bfad7b808c842e0fe1a8
BLAKE2b-256 c5b9691a92c2d07864f1ae56681e119528e97e5d03b3f88101cd97c0899305a2

See more details on using hashes here.

File details

Details for the file gaas_openai_agents-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gaas_openai_agents-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 28433e8fd05be15c61857e8785a76dd557e7e25911189d467ff5b2bdc96e9a13
MD5 c66a20244fbcfc407eb35e80b3340b8b
BLAKE2b-256 6014912b1cc92767d49876213360223230119060fdeb52aca4f37b21331d87b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page