Proxy Confidence: Auditing Black-Box LLM Agents with a Surrogate's Log-Probabilities
Organizations: Amazon
Abstract
A deployed LLM agent emits tool calls, queries, and code that can be silently wrong -- by the time the error surfaces, the action has run. Frontier chat APIs hide the model's token probabilities; the agent's stated confidence barely beats chance on the mistakes that matter; and resampling does not help, since frontier models are highly repetitive, reproducing the same call across samples. We recover the missing signal from a low-cost open-weight surrogate run in parallel. It reads the same context, schema, and proposed action as the agent, then scores the call from its own log-probabilities through a family of complementary readouts: teacher forcing and request-PMI weigh the likelihood of each argument value, a discriminative verdict judges the call as a whole, and tool-choice competition tests the function against its siblings. One principle says which to trust: a generative likelihood localizes wrong argument values, while the verdict catches holistically wrong calls. When the error type is unknown, an ensemble is the low-regret default. The readout is training-free, needs no access to the agent's internals, and costs one prefill pass alongside the tool call. On difficult coding tasks it reaches AUROC 0.825 where the actor's stated confidence is near chance (0.598), and the generative readouts beat it by +0.07 to +0.28 across three further actors. Against self-consistency it gains +0.14 to +0.19 on near-deterministic actors, at 1/K the cost. The signal drives two deployment modes: a real-time gate escalating the least-trustworthy calls for review (+0.05 to +0.30 accepted-action accuracy at 50% coverage), and confidence feedback, returning the tool result with the score so the agent adapts its next step -- lifting task success on live-execution benchmarks (+0.119 and +0.137, p <= 1e-4) and beating a random-value control where step errors are silent (+0.078, p = 0.003).
Figures & tables
| Signal | Readout | Targets |
|---|---|---|
| Verdict | on “is this correct?”, renormalized over YES/NO | coarse tool/code correctness |
| Teacher forcing | per-token of ’s exact call, localized to argument value tokens | wrong argument values |
| Request-PMI | , on value tokens | groundedness of args in request |
| Tool-choice competition | does prefer ’s function over siblings? | wrong function choice |
| Actor (family; ) | TF | PMI | verd. | self | PMI self |
|---|---|---|---|---|---|
| C-120b (family C; 775) | 0.735 | 0.794 | 0.526 | 0.515 | |
| C-20b (family C; 771) | 0.743 | 0.793 | 0.552 | 0.534 | |
| B (family B; 1261) | 0.636 | 0.721 | 0.546 | 0.648 |
| Dataset | locus | verd. | TF | PMI | actor | fuse | |
|---|---|---|---|---|---|---|---|
| AppWorld | holistic | 0.894 | n/a | n/a | 0.788 | n/a | .996 |
| BFCL base | holistic | 0.733 | 0.633 | n/a | 0.703 | 0.720 | .945 |
| BFCL long | holistic | 0.719 | 0.640 | n/a | 0.682 | 0.700 | .968 |
| BFCL v3 | args | 0.711 | 0.549 | 0.714 | 0.636 | 0.700 | .950 |
| parallel | args | 0.661 | 0.653 | 0.662 | 0.577 | 0.695 | .980 |
| NESTFUL | args | 0.594 | 0.643 | 0.554 | 0.620 | 0.655 |
Appendix figures & tables14 assets
Supplementary material from the paper’s appendix.
Appendix
| Fixed policy | worst-case regret (where) | mean regret |
|---|---|---|
| always verdict | (miss_param) | |
| always teacher-forcing | (BFCL v3) | |
| oriented fusion | (BFCL long) |
| Dataset | base | AUROC | acc@50% ( ) | AURC | rand | |
|---|---|---|---|---|---|---|
| BFCL (verdict+TF) | 2388 | 0.692 | 0.596 | 0.743 ( ) | 0.241 | 0.308 |
| xLAM (verdict) | 412 | 0.367 | 0.713 | 0.524 ( ) | 0.484 | 0.633 |
| xLAM (needle) | 725 | 0.542 | 0.890 | 0.843 ( ) | 0.179 | 0.458 |
| NESTFUL (needle) | 238 | 0.613 | 0.788 | 0.832 ( ) | 0.178 | 0.387 |
| tau2 (trajectory) | 149 | 0.772 | 0.679 | 0.867 ( ) | 0.149 | 0.228 |
| Dataset | Actor | Qwen | Gemma | self | (Q/G) |
| AppWorld | A1 | 0.894 | 0.836 | 0.788 | 1.00/.66 |
| AppWorld | A2 | 0.919 | 0.884 | 0.914 | .57/.14 |
| BFCL base | A1 | 0.733 | 0.728 | 0.703 | .95/.90 |
| BFCL base | A2 | 0.800 | 0.823 | 0.732 | 1.00/1.00 |
| BFCL long | A1 | 0.719 | 0.723 | 0.682 | .97/.98 |
| BFCL long | A2 | 0.820 | 0.821 | 0.759 | 1.00/1.00 |
| Dataset | verd. | TF/PMI | used by (actors; scorers) |
|---|---|---|---|
| AppWorld | ✓ | — | grid, hero, Mode B (A+B+C; Q,Gm) |
| BFCL base/long | ✓ | — | grid, hero, cap14 (A+B+C; Q,q,Gm) |
| BFCL parallel/v3 | ✓ | ✓ | hero, cap14, battery (A; Q,q) |
| BFCL miss_func/param | ✓ | ✓ † | hero, cap14 (A; Q,q) |
| xLAM | ✓ | ✓ | hero, cap14, selective, active, SC, § 6 (A+B+C; Q,q) |
| NESTFUL | ✓ | ✓ | hero, cap14, selective, active (A; Q,q) |
| Dataset | Signal | 14B | 32B | |
| Teacher forcing—access-bound ( , TOST-equivalent) | ||||
| NESTFUL/A1 | TF | 0.636 | 0.650 | |
| NESTFUL/A2 | TF | 0.604 | 0.611 | |
| xLAM/A1 | TF | 0.674 | 0.670 | |
| xLAM/A2 | TF | 0.702 | 0.690 | |
| parallel/A1 | TF | 0.628 | 0.633 | |
| Readout | |||
|---|---|---|---|
| Teacher forcing | ms | ms | ms |
| Verdict | ms | ms | ms |
| nl2bash | AppWorld test_challenge | ||||
| Arm | success | vs. control | success | vs. control | |
| control (no number) | — | — | |||
| vigilance (no number) | n.s. | — | — | ||
| random | n.s. | ( ) | |||
| verdict only | n.s. | — | — | ||
| request-PMI | ( ) | — | — | ||
| Dataset | Self-verif.? | blind | all | all vs. blind / placebo (Holm ) |
| xLAM, A1 ( ) | no (schema) | / | ||
| xLAM, A2 ( ) | no (schema) | / | ||
| NESTFUL ( ) | yes (recomp.) | n.s. / n.s. | ||
| BFCL-v4 ( ) | yes (real res.) | n.s. (all ) | ||
| Selective review at fixed budget call (signal- vs. random-gated): | ||||
| xLAM ( ) | — | sig / rand | (95/1) | |
| Signal | AUROC | type | note |
| Ensemble disagreement | 0.70–0.80 | epistemic | orthogonal, near-free |
| Self-consistency ( ) | 0.71–0.75 | epistemic | good on easy calls |
| Semantic entropy | 0.68–0.71 | epistemic | no gain over above |
| Schema-satisfaction | 0.50–0.51 | determ. | null (frontier actors) |
| verdict variants (vs. plain verdict, same rows) | |||
| Debiased verdict | 0.51–0.67 | discrim. | no gain on tool calls |