diff options
| author | Igor Soarez <igor@soarez.org> | 2026-09-28 12:45:14 +0300 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-09-28 12:45:14 +0300 |
| commit | f5d9efe3a80ae1bdfbcf082ac9cb69f4d322d150 (patch) | |
| tree | 429d29f920c8d843707b04c2b1cb20296c3483de /secrets/test | |
| parent | bf177c58da897dbd084cc1fe8e6ebd9b61b85830 (diff) | |
pi: the siliconflow key is a reference, not a name
models.json gave the provider an apiKey of "SILICONFLOW_API_KEY", which pi
sends verbatim as the credential: it interpolates "$NAME" and "${NAME}", runs
"!command", and treats anything else as a literal. So that provider has been
authenticating with the 19-character string "SILICONFLOW_API_KEY" and getting a
401 for as long as it has existed.
Confirmed by calling pi's own resolver: "SILICONFLOW_API_KEY" resolves to
itself, "$SILICONFLOW_API_KEY" to the value. Nothing catches this --
isConfigValueConfigured returns true for both and reports no missing variables,
so `pi auth check` says ready either way, and only a real request fails. Hence
the note in CLAUDE.md beside the models.d row: the rule is invisible in the
file, and the next provider added would repeat it.
Reported as a change request from the machine that hit it; the sweep for other
instances found none.
Diffstat (limited to 'secrets/test')
0 files changed, 0 insertions, 0 deletions
