Skip to content

security(hipaa): accept TES's service-only credential on /register_tools - #8

Merged
man4ish merged 2 commits into
mainfrom
security/toolserver-deployable-delegated-auth
Sep 27, 2026
Merged

man4ish merged 2 commits into
mainfrom
security/toolserver-deployable-delegated-auth

Conversation

@man4ish

@man4ish man4ish commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator
  • security(hipaa): accept TES's service-only credential on /register_tools
  • build: make the delegated-auth ToolServer image buildable

🤖 Generated with Claude Code

man4ish and others added 2 commits September 24, 2026 23:35
requirements.txt pins omnibioai-iam-client (private repo) via git+https
for the HIPAA-V2-019 delegated-execution auth added in a4cdf8a, but the
slim base image had no git and no credential path, so `docker build`
failed at `pip install`. No image containing a4cdf8a was ever built,
and production kept running the 2026-09-04 image, whose /runs,
/validate and /register_tools have no authentication at all.

Install git and pass the GitHub token as a BuildKit secret through an
ephemeral GIT_ASKPASS helper, the same pattern as
omnibioai-model-registry/Dockerfile.

Verified with a local build (arm64, --network none, no credential in
image history or filesystem): /runs*, POST /runs and /validate return
401 without a credential or with a forged bearer; /register_tools
returns 501; /capabilities and /health stay 200.

Build: docker build --secret id=github_token,src=<token-file> .

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HIPAA-V2-019. /register_tools was disabled (501) because no permission
model existed for it, which would have dropped TES's 1,716 HTTP tools
on deploy. It is re-enabled behind require_tes_registration: Auth's
service-only `toolserver_registration` credential, verified live via
iam_client.registration (v0.1.5), from a service identity listed in
TOOLSERVER_REGISTRATION_CLIENT_IDS (empty denies all). Only tools with
an http block are registered; the service id and counts are logged,
never the credential. /runs and /validate still accept only
delegated-execution credentials, which a registration credential can
never satisfy.

Pins omnibioai-iam-client to v0.1.5.

Tests: 402 passed (17 new); four old 501-contract tests now assert 401
for delegated or anonymous callers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@man4ish
man4ish merged commit 90fba91 into main Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant