Skip to content

Composio contract gate auto-executes tools after failing to surface the contract 4 times #6407

Description

@Al629176

Description

The Composio contract gate ([composio][contract-gate]) is meant to surface a tool's contract to the user before first execution. When the surface never reaches the user — which is what happens today — it counts "fresh instances surfaced without execution", and after a threshold auto-proceeds and executes the tool anyway. So a consent mechanism degrades, silently, into an execution mechanism.

Reported by: Alan (QA)
Build: v0.63.29
Reproducible: Yes — 14 occurrences in 8 minutes on GITHUB_LIST_REPOSITORY_ISSUES

Steps to reproduce

  1. Connect GitHub via Composio
  2. Ask the agent something that needs GITHUB_LIST_REPOSITORY_ISSUES (e.g. "which of my open issues mention X")
  3. Observe:
14:45:53 WRN [composio][contract-gate] auto-proceeding after 4 fresh instances surfaced this contract without execution slug=GITHUB_LIST_REPOSITORY_ISSUES global_count=4
14:45:53 WRN [composio][contract-gate] auto-proceeding after threshold; executing without surfacing slug=GITHUB_LIST_REPOSITORY_ISSUES
14:46:12 WRN … after 5 fresh instances …
   … through global_count=17 by 14:54:02

No contract card was ever shown in the UI.

Expected behaviour

  • The contract is surfaced to the user once, and execution waits for acknowledgement (or the gate is explicitly configured to be advisory)
  • If the surface cannot be reached, the gate fails closed with a clear reason — it does not execute

Actual behaviour

  • Contract never rendered; after 4 attempts the gate executes without consent and keeps doing so on every subsequent call, incrementing a counter
  • Read-only tool in this instance, but the same path applies to write tools

Impact

  • Consent gate provides no consent: any late-bound Composio action can run after 4 silent misses
  • Security-relevant for write actions (send email, create issue, post message)
  • Log noise: 28 WRN lines for one user question

Acceptance criteria

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugcomposioComposio-backed provider integrations, sync, and provider adapters.priority: p0Drop what you are doing. Data loss, a live break, or an exploitable hole.securitySecurity, encryption, approvals, credentials, and trust boundaries.

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions