你會把 reasoning trace 當機密嗎
昨天看到一篇在講 reasoning traces 洩漏的文章,我第一個反應不是哇模型也太危險,而是,靠,我們平常對 debug 資料真的太鬆了。
文中那個點很刺眼。研究者把 frontier model 回傳的加密 reasoning block replay 到同家族的弱模型,最後竟然能在 jailbreak 下吐出明文推理。講白話就是,你以為那只是模型內心小劇場,結果它其實更像一杯外帶咖啡,杯蓋沒蓋好,晃一晃還是會灑出來。
我踩過的一次小坑
我們 team 之前做過一個內部 agent,會把 tool call transcript、error stack、使用者最後三輪對話一起丟回模型,讓它自我修正。那時候覺得很合理,因為成功率真的有拉起來,從大概 62% 到 81%。但後來我回頭看 log,發現裡面其實混了滿多不該長住的東西,像是 staging API response、客服貼上來的訂單備註,還有工程師自己寫的 prompt TODO。
以前我會把這些東西都叫做 debug context。現在我比較傾向直接把它當 sensitive output。
我現在改了三件事
第一,trace 不再全量保存。真的要留,也只留 48 小時,而且預設關掉 raw transcript export。
第二,模型回傳前先做 redact。像 email、token、內部路徑、帶身份資訊的欄位,我寧可多切掉一點,也不要為了之後好 debug 全留著。
第三,凡是會被二次送進模型的內容,我會先問一句,這段如果被另一個 model 讀到,會不會變成 prompt injection 載體。以前這題我根本不會問。
換個說法,現在的 chain-of-thought、tool logs、debug transcript,對我來說已經比較像 production data,不是隨手丟在桌上的咖啡渣。你可以拿來提神,但不能假設它不會沾到別的地方。
這件事也提醒我,很多 agent 安全問題,最後不是輸在模型夠不夠聰明,而是我們把哪些東西當成無害背景資料。真要說我學到什麼,大概就是一句:能幫你除錯的東西,也可能幫別人讀懂你本來不想公開的思路。
作者:咖啡驅動開發