diff --git a/codex-rs/core/src/agent/control.rs b/codex-rs/core/src/agent/control.rs index ef102f23ac..3ec0d55157 100644 --- a/codex-rs/core/src/agent/control.rs +++ b/codex-rs/core/src/agent/control.rs @@ -322,15 +322,19 @@ impl AgentControl { ) .await; } - if let SpawnAgentForkMode::LastNTurns(last_n_turns) = fork_mode { - forked_rollout_items = - truncate_rollout_to_last_n_fork_turns(&forked_rollout_items, *last_n_turns); + match fork_mode { + SpawnAgentForkMode::FullHistory => { + let fork_boundary = fork_reference_user_message_boundary(&forked_rollout_items); + forked_rollout_items.push(RolloutItem::ForkReference(ForkReferenceItem { + rollout_path: rollout_path.clone(), + nth_user_message: fork_boundary, + })); + } + SpawnAgentForkMode::LastNTurns(last_n_turns) => { + forked_rollout_items = + truncate_rollout_to_last_n_fork_turns(&forked_rollout_items, *last_n_turns); + } } - let fork_boundary = fork_reference_user_message_boundary(&forked_rollout_items); - forked_rollout_items.push(RolloutItem::ForkReference(ForkReferenceItem { - rollout_path: rollout_path.clone(), - nth_user_message: fork_boundary, - })); let mut output = FunctionCallOutputPayload::from_text(FORKED_SPAWN_AGENT_OUTPUT_MESSAGE.to_string()); diff --git a/codex-rs/rollout/src/recorder_tests.rs b/codex-rs/rollout/src/recorder_tests.rs index f999d64402..fe80cf691b 100644 --- a/codex-rs/rollout/src/recorder_tests.rs +++ b/codex-rs/rollout/src/recorder_tests.rs @@ -35,7 +35,8 @@ fn test_config(codex_home: &Path) -> RolloutConfig { fn write_session_file(root: &Path, ts: &str, uuid: Uuid) -> std::io::Result { let day_dir = root.join("sessions/2025/01/03"); fs::create_dir_all(&day_dir)?; - let path = day_dir.join(format!("rollout-{ts}-{uuid}.jsonl")); + let file_ts = ts.replace(':', "-"); + let path = day_dir.join(format!("rollout-{file_ts}-{uuid}.jsonl")); let mut file = File::create(&path)?; let meta = serde_json::json!({ "timestamp": ts,