Skip to content

bug: bearer A2A tasks/get reads any execution on an agent the principal can access, not only the tasks it started #3751

Closed

Description

@vybe

Summary

A bearer caller's tasks/get on the inbound A2A server scopes only on the agent (routers/a2a.py, the tasks/get branch): any Trinity principal with access to the agent can read any execution id on that agent, including turns another principal started. AAuth callers are gated by execution_owned_by; paid callers by the payer binding; bearer callers are not gated by who started the task.

Context

Pre-existing, recorded as a deferred item in the #3749 plan (decision 22) and left outside that fix's acceptance criteria because narrowing the read scope is a behaviour change for existing bearer clients. With #3749 merged, long turns now hand out execution ids more often, so the read scope is worth closing on its own.

Acceptance Criteria

  • A bearer tasks/get / tasks/cancel answers Task not found for an execution the calling principal did not start on that agent (owner, shared user and admin reach stays as the principal's access to the agent dictates; document the rule).
  • The existing bearer poll path for the starting principal is unchanged.
  • Unit tests cover both directions; docs/user-docs/integrations/a2a-protocol.md states who may poll a task.

Technical Notes

  • routers/a2a.py — the bearer tasks/get / tasks/cancel branches; the execution row already carries source_user_id / source_mcp_key_id, which is the natural ownership key.

Activity

  1. added
    complexity-lowComplexity: low (board points 1-3)
    status-readyGreenlit and ready for development (vetted; counterpart to status-incubating)
    on Oct 15, 2026
  2. added and removed
    status-readyGreenlit and ready for development (vetted; counterpart to status-incubating)
    on Oct 15, 2026
  3. self-assigned this
    on Oct 15, 2026
  4. dolho commented on Oct 15, 2026

    @dolho
    Contributor

    /claim

  5. github-actions commented on Oct 15, 2026

    @github-actions

    @dolho This issue is already assigned to dolho. Use /unclaim first if you want to take over.

  6. added
    status-in-devMerged to dev, awaiting release cut to main
    and removed on Oct 20, 2026
  7. removed
    status-in-devMerged to dev, awaiting release cut to main
    on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions