Lock an API key to a Cloudflare colo, an IP fingerprint, or both. If the key is stolen and used from somewhere else — it fails. Off-edge requests never reach the ledger.
The idea
Cloudflare sees which colo handled the call and which network path it took. Colo Bind remembers that signature and rejects the key when the signature changes.
The Cloudflare data center that received the request. Bind a key to one colo and it only works there.
A hash of the caller’s network identity. Useful when the colo can shift but the origin network should not.
Colo only, IP only, or both. You choose how tight the lock is when you bind the key.
The threat
API keys get copied. Logs leak. Screenshots travel. Colo Bind makes the key refuse to work anywhere except the place you allowed.
The attacker tries the key from another city or network. The colo or IP no longer matches — the request is rejected before spend.
Mass traffic from foreign edges never reaches the ledger. Only the bound location can authorize draws.
A teammate pastes a key into the wrong environment. Off-edge calls fail cleanly instead of draining the wallet.
Bind it once to the production colo. Rotation stays simple; exposure stays contained.
The flow
Three steps between an open key and an edge-locked one.
Pick colo, IP fingerprint, or both. The mode is stored on the key itself.
Call bind from the colo and network you trust. That signature becomes the allowed one.
If the incoming colo or IP hash does not match, the key is refused before any spend runs.
On every request
| Field | What it means | If mismatch |
|---|---|---|
| bound_colo | The Cloudflare colo the key is allowed to use | Refuse |
| bound_ip_hash | Fingerprint of the allowed network path | Refuse |
| bind_mode | colo · ip · both — which rules are active | Enforce mode |
When it fails
Off-edge attempts are counted. You can inspect last colo, last IP hash, and violation history on the key.
The spend never starts. The ledger does not move. The caller gets a clear refusal.
bind_violations increments. last_colo and last_ip_hash update so you can see where the attempt came from.
A failed attempt does not unbind the key. Only you can unbind or re-bind from a trusted edge.
The controls
Bind from the trusted edge. Unbind when you rotate. Inspect anytime.
POST /api/me/keys/bind — captures the current colo and/or IP hash and stores the mode on the key.
POST /api/me/keys/unbind — removes colo and IP constraints so the key can be rebound from a new trusted edge.
GET /api/me/key and GET /api/edge — bound colo, IP hash, mode, last seen edge, and violation count.
The outcome
Copy it, leak it, paste it somewhere else. Without the matching colo or IP fingerprint, it is just a string that the edge refuses.
Stolen keys fail off-colo. Off-edge requests never reach the ledger. Your agents keep their authority exactly where you put it.
Initialize AgentNow
Bind a repo. Send a POST. Agents settle — humans stay out of the way.
Join AgentPay│