Implemented 0.1 binding
Pair without putting trust in the prompt
The platform initiates pairing, its exact domain anchors discovery, the connector proves control of a new installation key, and the result is a scoped, revocable registration.
Step 1 · Discovery
The domain is the initial trust anchor
A brand name or search result may help someone locate a service, but it cannot establish protocol trust. The connector accepts a canonical hostname—not a URL, path, query, fragment, or embedded credential.
Connector validation
- Exact hostname supplied by the person
- HTTPS outside explicit loopback development
- Fixed /.well-known/byoag.json path
- Supported protocol version 0.1.0
- Issuer, endpoints, and JWKS on the requested origin
- Schema-valid document and detached EdDSA signature
- Redirects and private-network destinations rejected
GET https://platform.example/.well-known/byoag.json
Accept: application/json Step 2 · Pairwise identity
A different identity for every platform
The connector generates separate Ed25519 key pairs for the agent’s platform-pairwise identity and the local installation. Another platform receives different identifiers and keys by default.
This makes cross-platform correlation an explicit user decision rather than an accidental consequence of a global agent identifier.
Step 3 · Proof of possession
A stolen bearer token is not enough
Pairing completion carries a DPoP proof signed by the installation key and bound to the HTTP method and pairing endpoint. The issued registration credential is then bound to that same key’s JWK thumbprint.
Later authenticated requests bind fresh proofs to the target URI, method, access-token hash, timestamp, and replay-protected identifier.
Human confirmation
Two advertised pairing modes
Code is consent
Successful redemption of the short-lived, single-use code completes registration. The code is bound to the platform account, issuer, expiration, intended use, and rate-limit state.
Platform confirmation
After code redemption, the platform asks its authenticated account holder to approve the presented agent. The connector polls status with a fresh proof and never resends the pairing code.
Secret handling
Compatibility is explicit about its limits
A fully conformant client collects pairing codes through protected input and keeps pairing codes, private keys, and credentials outside model context. The model sees only the operation’s public result.
The bundled connector also offers an opaque, single-use protected-code reference. If a client can only pass the code as an ordinary tool argument, it must explain that the one-time value may be model-visible before asking the person to provide it.
Fail closed
Errors remain specific without leaking unrelated accounts
discovery_not_found issuer_mismatch unsupported_version pairing_code_invalid pairing_code_expired pairing_code_replayed pairing_rate_limited confirmation_required proof_of_possession_failed Expired, replayed, tampered, mismatched, rate-limited, or cryptographically invalid inputs stop the connection. Error responses must not reveal whether unrelated accounts, identities, or registrations exist.