Answer-Only Disclosure: Private-Context LLM Assistance over Web APIs with a Leakage Ledger
Organizations: Australian Catholic University North Sydney, NSW, Australia · Ant Group China · University of Macau Macau, China · Swinburne University of Technology Melbourne, VIC, Australia ·
Abstract
Web assistants increasingly answer questions about a user's private documents by pairing a small on-device model with a cloud LLM behind a Web API. In collaborative decoding, the document stays on the client, and the cloud receives only a public view that the user approves, such as the question alone, but the two models exchange messages while the answer is generated. We show that the message transcript can disclose private content that neither the public view nor the answer contains. In a planted-secret audit, speculative decoding with private drafts did not include the secret code in its answers, yet sent the code to the cloud in rejected drafts. We present ADLER, a decoding protocol for streaming LLM APIs in which every message to the cloud depends only on the public view and the answer the user sees, regardless of how the client combines the two models or how the cloud behaves. A client-side leakage ledger then bounds how much the answer itself reveals relative to a public reference process built from the cloud's replies. In the audit, no ADLER configuration exposed the secret beyond the answer. On GSM8K math problems with numerical values masked in the cloud's input, ADLER with an unlimited leakage budget raises the exact-match accuracy of a 0.5B client from 0.41 to 0.83 and of a 1.5B client from 0.67 to 0.85 under lenient answer parsing, close to the 0.92 achieved by uploading the full problem. It also exceeds a zero-leakage program baseline (0.69) by 0.14 and 0.16, respectively. In this baseline, the cloud writes a program that the client runs offline using the private numbers. The ledger records the disclosure charge associated with this gain; budgets of 16 nats or less leave accuracy near the cloud-only baseline on GSM8K.
Figures & tables
| 2WikiMQA / question | 2WikiMQA / BM25 | MuSiQue / question | MuSiQue / BM25 | |||||
| Score | Nats | Score | Nats | Score | Nats | Score | Nats | |
| Restricted cloud | 0.262 | – | 0.343 | – | 0.097 | – | 0.218 | – |
| Local only | 0.221 | – | 0.221 | – | 0.150 | – | 0.150 | – |
| Full upload | 0.428 | – | 0.428 | – | 0.354 | – | 0.354 | – |
| Private-draft SD | 0.266 | – | – | – | 0.104 | – | – | – |
| ADLER | 0.261 | 2.6 | 0.328 | 2.4 | 0.121 | 3.7 | 0.232 | 3.3 |
| 0.5B local | 1.5B local | |||||
| Method | Strict | Lenient | Nats | Strict | Lenient | Nats |
| Restricted cloud | 0.012 | 0.024 | – | 0.012 | 0.024 | – |
| Local only | 0.106 | 0.410 | – | 0.083 | 0.670 | – |
| Post-edit | 0.136 | 0.357 | – | 0.210 | 0.578 | – |
| Program | 0.691 | 0.691 | – | 0.691 | 0.691 | – |
| ADLER | 0.012 | 0.024 | 16 | 0.024 | 0.036 | 16 |
| Asks for code | Other | ||||
|---|---|---|---|---|---|
| Method | Answer | Beyond | Beyond | F1 | Bound |
| Restricted cloud | 0.00 | 0.00 | 0.00 | 0.25 | |
| Local only | 0.98 | 0.00 | 0.00 | 0.30 | |
| Full upload | 1.00 | 1.00 | 1.00 | 0.51 | – |
| Private-draft SD | 0.00 | 0.10 | 0.00 | 0.27 | – |
| ADLER | 0.00 | 0.00 | 0.00 | 0.25 | 0.34 |
| GSM8K / masked numbers | Multi-hop QA | |||||||
|---|---|---|---|---|---|---|---|---|
| Factor | Setting | Strict | Lenient | Nats | Req. | Down kB | F1 | Nats |
| Control | selected | 0.75 | 0.81 | 71 | 52 | 216 | 0.229 | 17.1 |
| Score | 0.07 (-0.69*) | 0.08 (-0.73*) | 13 | 61 | 253 | – | – | |
| Score | 0.66 (-0.09*) | 0.73 (-0.07*) | 57 | 54 | 224 | 0.25 (+0.02) | 5.2 | |
| Score | 0.67 (-0.08*) | 0.78 (-0.02) | 108 | 56 | 231 | – | – | |
| Score | 0.62 (-0.13*) | 0.72 (-0.09*) | 153 | 60 | 249 | – | – | |
Appendix figures & tables6 assets
Supplementary material from the paper’s appendix.
Appendix
| 2WikiMQA / question | 2WikiMQA / BM25 | MuSiQue / question | MuSiQue / BM25 | |||||
| Score | Nats | Score | Nats | Score | Nats | Score | Nats | |
| Restricted cloud | 0.262 | – | 0.343 | – | 0.097 | – | 0.218 | – |
| Local only | 0.348 | – | 0.348 | – | 0.185 | – | 0.185 | – |
| Full upload | 0.428 | – | 0.428 | – | 0.354 | – | 0.354 | – |
| Private-draft SD | 0.259 | – | – | – | 0.115 | – | – | – |
| ADLER | 0.272 | 2.5 | 0.329 | 2.1 | 0.133 | 3.6 | 0.219 | 2.8 |
| Design | Cloud receives beyond | Trips | Bound |
|---|---|---|---|
| Private-draft SD (SpecSteer, AsymSpec ( Lv et al., 2026 ; Liang et al., 2026 ) ) | every draft, rejected ones too | per block | none |
| Logit upload ( Zhang et al., 2024 ) ; CoVeil cloud-side ( Zhang et al., 2026 ) | local signals at every step | per token | none |
| CoVeil edge-side ( Zhang et al., 2026 ) | the answer | per token | none |
| DP-Fusion ( Thareja et al., 2026 ) | single party: the model reads | – | Rényi, on the output |
| Post-edit (HaS ( Chen et al., 2023b ) ) | nothing | one | zero leakage |
| Program (PAL ( Gao et al., 2023 ) ) | nothing | one | zero, if run offline |
| Method | Strict | Lenient | Nats | Req. |
| Restricted cloud | 0.012 | 0.024 | – | 59 |
| Local only | 0.106 | 0.410 | – | – |
| Full upload | 0.870 | 0.918 | – | 37 |
| Private-draft SD | 0.013 | 0.032 | – | – |
| ADLER | 0.013 | 0.026 | 4 | 59 |
| ADLER | 0.012 | 0.024 | 16 | 59 |
| kB | Round trip (ms) | |||||
| Design | Req. | Up | Down | 20 | 100 | 200 |
| QA | ||||||
| Plain call, restricted | 1.0 | 4.8 | 0.1 | 0.02 | 0.10 | 0.20 |
| Plain call, full upload | 1.0 | 48.1 | 0.1 | 0.06 | 0.14 | 0.24 |
| One token per request ( ) | 10.7 | 54.1 | 5.5 | 0.26 | 1.12 | 2.19 |
| ADLER ( ) | 3.7 | 17.3 | 15.0 | 0.10 | 0.40 | 0.77 |
Privacy Leakage in Language Models
Privacy leakage in language models concerns how models expose training data, infer sensitive traits, or transmit private context through outputs and internal channels.
See all 284 papers