Persist security risk scores in rollout history (#38363)

## What changed

- Add a `SecurityRiskScore` rollout item containing a category and numeric score.
- Persist the item in both thread history modes while excluding it from model context, user-visible thread history, search text, forks, and reconstructed conversation history.
- Re-export the score type from the extension API.

## Testing

- Cover serialization, persistence and loading, thread history projection, session reconstruction, append planning, and memory filtering.

GitOrigin-RevId: 1926fe366aeaa75052708a6da589f45a38eefb52
This commit is contained in:
jif authored and copyberry committed 2026-08-13 12:04:29 +00:00
1 parent 9ed0047a61
commit 72fa74fbc9
32 files changed
+165 -4

No files matched your search

+6
View File
@@ -417,6 +417,7 @@ mod job {
| RolloutItem::Compacted(_)
| RolloutItem::TurnContext(_)
| RolloutItem::WorldState(_)
| RolloutItem::SecurityRiskScore(_)
| RolloutItem::EventMsg(_) => None,
})
.collect::<Vec<_>>();
@@ -672,6 +673,7 @@ mod tests {
use super::*;
use codex_protocol::AgentPath;
use codex_protocol::protocol::InterAgentCommunication;
use codex_protocol::security_risk::SecurityRiskScore;
use pretty_assertions::assert_eq;
#[test]
@@ -722,6 +724,10 @@ mod tests {
let serialized = job::serialize_filtered_rollout_response_items(&[
RolloutItem::ResponseItem(mixed_contextual_message.into()),
RolloutItem::ResponseItem(skill_message.into()),
RolloutItem::SecurityRiskScore(SecurityRiskScore {
category: "action_risk".to_string(),
score: 0.92,
}),
RolloutItem::ResponseItem(subagent_message.clone().into()),
])
.expect("serialize");