ory-openai-agents
Ory Agent Security for the OpenAI Agents SDK.
Authorizes every tool call against Ory Permissions via a tool-input guardrail, records
invocations, and propagates user → agent identity — built on
ory-argus.
pip install ory-openai-agents
from uuid import uuid4
from agents import Agent, Runner, function_tool
from ory_argus import OryAgentClient, with_hook_context
from ory_openai_agents import ory_tool_input_guardrail, ory_run_hooks
ory = OryAgentClient.from_env("openai-agents")
ory_guardrail = ory_tool_input_guardrail(client=ory)
@function_tool(tool_input_guardrails=[ory_guardrail])
def search(query: str) -> str:
"""Search the application's approved data source."""
return search_backend(query)
agent = Agent(
name="assistant",
tools=[search],
)
with with_hook_context(ory, session_id=uuid4().hex):
status = "error"
try:
result = Runner.run_sync(agent, "…", hooks=ory_run_hooks(client=ory))
status = "ok"
finally:
ory.logger.activity(
"session.end",
status,
attributes={"harness": "openai-agents"},
)
ory.flush_events(timeout=3)
Attach the guardrail to every side-effecting FunctionTool; installing the package alone
does not gate tools. Hosted and built-in tools do not pass through this function-tool
guardrail. Reuse one OryAgentClient for guardrails and run hooks.
Scope each Runner invocation with with_hook_context so session, tool, and completion events
share one Agent Security session ID. Prefer a stable job or conversation ID supplied by the
deployment controller; generate a new opaque ID when each invocation is a distinct session.
- observe (default): denied tools still run; a
permission.observe_denyactivity event is recorded. - enforce: denied tools are rejected — the model receives the denial and the tool never executes.
Credentials are read from the shared ~/.config/ory-agent-plugins/config.json, so a login
from any Ory harness or ory-argus login is reused automatically.
For a headless Agent Security deployment, inject ORY_PROJECT_URL,
ORY_AGENT_SECURITY_URL, and ORY_AGENT_API_KEY into the Agent process. Startup resolves
the administrator-provisioned subject and opaque root from Agent Security, skips browser
login, and keeps that context only in memory. ORY_AGENT_SUBJECT_ID and
ORY_AGENT_ROOT_DELEGATION are compatibility overrides for older packages. The
application still supplies the OpenAI Agents type; do not inject ORY_USER_OAUTH2_TOKEN.
Metadata
Release files for ory-openai-agents 1.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ory_openai_agents-1.4.5.tar.gz | 5.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ory_openai_agents-1.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.1 kB
Release files / ory_openai_agents-1.4.5.tar.gz
| Download URL | ory_openai_agents-1.4.5.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b09469e46b4ece6c21958133d0263bb86d5b6280755c1435c94297d028ab82fe
|
|
BLAKE2b-256 checksum How to use checksums |
14b97374d1f75120618af93be3d04b8e53df40772be8a105bbe22f447c06776e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ory_openai_agents-1.4.5-py3-none-any.whl
| Download URL | ory_openai_agents-1.4.5-py3-none-any.whl |
|---|---|
| Size | 4.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d90ba66f4a2a73b54f37cd10834314d9ad7a0fc7ebd4d7fe87680b088e26c8c
|
|
BLAKE2b-256 checksum How to use checksums |
d8e9c63e23a2f18054cce9bfa664e9ad3ab7b5725b2b1893474c172cab599864
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|