Skip to main content

Wrap a deny.sh vault entry as an OpenAI Agents SDK tool. The credential resolves inside the tool boundary; only a narrowed DTO reaches the model. Fail-closed leak sweep.

Project description

deny-sh-openai-agents

Wrap a deny.sh vault entry as an OpenAI Agents SDK tool (Python). The credential resolves inside the tool boundary; only a narrowed DTO reaches the model. Fail-closed leak sweep.

pip install deny-sh-openai-agents openai-agents

Usage

import os
import requests
from pydantic import BaseModel
from agents import Agent, Runner
from deny_sh_openai_agents import deny_vault_tool

class InvoiceArgs(BaseModel):
    id: str

def lookup(stripe_key: str, args: dict) -> dict:
    r = requests.get(
        f"https://api.stripe.com/v1/invoices/{args['id']}",
        headers={"Authorization": f"Bearer {stripe_key}"},
    )
    body = r.json()
    # narrowed DTO -- never the raw key, never the raw upstream body
    return {"id": body.get("id"), "amount_due": body.get("amount_due"), "status": body.get("status")}

invoice_tool = deny_vault_tool(
    label="stripe-prod",                  # or: id="item_abc"
    password=os.environ["VAULT_PW"],      # server env, never the prompt
    name="get_invoice",
    description="Look up a Stripe invoice by id",
    args_schema=InvoiceArgs,
    use=lookup,
)

agent = Agent(
    name="Billing",
    instructions="Help the user with their invoices.",
    tools=[invoice_tool],
)

result = Runner.run_sync(agent, "What is the status of invoice in_1?")
print(result.final_output)

The Stripe key is resolved + consumed entirely inside lookup. The agent and the model provider see only the input args and the narrowed return. The key never enters the model's context window. If use ever returns the raw secret, the leak sweep raises (DenyLeakError) and the secret never crosses back into the model context.

Multi-tenant

Pass a per-tenant client_options={"api_key": ...} and password. One tenant cannot decrypt another's vault entry; the boundary is cryptographic, not policy-based.

Config

Field Required Notes
label / id one of vault entry label, or a stable item id
password yes vault wrap password
name, description, args_schema yes standard Agents SDK tool fields (args_schema is a pydantic model)
use(secret, args) yes privileged work; return a narrowed DTO
client_options no forwarded to deny_sh.vault_get (api_key, base_url, ...)
leak_sweep no default True; fail-closed scan of the returned DTO

Apache-2.0. Part of deny-sh-integrations.

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

deny_sh_openai_agents-0.1.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

deny_sh_openai_agents-0.1.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: deny_sh_openai_agents-0.1.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for deny_sh_openai_agents-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3cf65492abebc1216ce4b1b17e377408316a53b58193fdc30a1bd5d6df7684af
MD5 cd2afb02fb387109fff3187bf0b7927d
BLAKE2b-256 027bf8a00c4d002d95124c32e78e105a2acf27ef3ddfa47a078b26d3f6de35bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for deny_sh_openai_agents-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3aa78e4b94df535851be9c90c7addea5e5be59632ee475c4c067e3d1f7f08b33
MD5 08617f246fd8f1627cd3bdec103c23f3
BLAKE2b-256 0e7ff49dbf57614d6afd589dad9dc28f44e165e6cf8fe094f622d4f7a9806023

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