Repository navigation
Is the Claude behind your Kilo custom provider real? A 3-request check (thinking signature) #15243
mupromax
started this conversation in
4. Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
If you run Kilo with your own key through a Custom provider (a reseller, relay or gateway instead of Anthropic directly), here's a 3-request check that the Claude behind it is actually Claude. Disclosure: I run one of those gateways (APIVAI), so I have an interest; the check works on any endpoint, mine included, and I'd like people to run it on everything.
Why not just ask the model? "Who are you" and "what's your knowledge cutoff" are useless: a relay can inject a system prompt, and genuine Claude gives inconsistent answers anyway. The
modelfield in the response is written by the relay.What does work: the extended-thinking signature. With thinking on, every
thinkingblock carries an opaquesignature. When you send the assistant turn back (which Kilo does on every tool call), Anthropic verifies it. So:thinkingblock plustool_use.Invalid signature in thinking block.A relay serving another model can invent a signature-looking string, but it can't make Anthropic's verifier reject the tampered one unless requests really reach Anthropic.
Kilo-specific note: this needs the native format, i.e. Provider API = Anthropic Messages in the custom provider. With OpenAI Compatible, signatures are dropped in conversion, so you can't run the test there, and multi-turn thinking + tools may break with "Invalid signature" errors if the relay mangles blocks. Kilo's field takes the base URL with
/v1; the script below wants it without.Costs well under a cent on Haiku, about a cent on Sonnet.
Limits, so nobody over-reads it: it proves "Anthropic's Claude", not which Claude (Opus quietly served as Sonnet passes; compare cost and latency against the official API for that). It's a snapshot, so rerun it now and then. Passing means "no evidence of substitution", not proof.
My own run, for transparency: Haiku 4.5 and Sonnet 4.6 on my gateway gave 200 on the unchanged signature and 400
Invalid signatureon the tampered one. Results from other endpoints are welcome below, failures especially.All reactions