diff --git a/codex-rs/core/src/context/contextual_user_message_tests.rs b/codex-rs/core/src/context/contextual_user_message_tests.rs index dae0ff313b..2f3d43d87d 100644 --- a/codex-rs/core/src/context/contextual_user_message_tests.rs +++ b/codex-rs/core/src/context/contextual_user_message_tests.rs @@ -84,6 +84,36 @@ fn parses_canonical_internal_model_context_fragment() { ); } +#[test] +fn rejects_internal_model_context_without_leading_wrapper_newline() { + assert_eq!( + InternalModelContextFragment::parse_canonical( + "body\n" + ), + None + ); +} + +#[test] +fn rejects_internal_model_context_without_trailing_wrapper_newline() { + assert_eq!( + InternalModelContextFragment::parse_canonical( + "\nbody" + ), + None + ); +} + +#[test] +fn rejects_internal_model_context_without_wrapper_newlines() { + assert_eq!( + InternalModelContextFragment::parse_canonical( + "body" + ), + None + ); +} + #[test] fn detects_legacy_goal_context_fragment() { assert!(is_contextual_user_fragment(&ContentItem::InputText { diff --git a/codex-rs/core/src/context/internal_model_context.rs b/codex-rs/core/src/context/internal_model_context.rs index 2966a11994..8c066a349d 100644 --- a/codex-rs/core/src/context/internal_model_context.rs +++ b/codex-rs/core/src/context/internal_model_context.rs @@ -83,8 +83,8 @@ impl InternalModelContextFragment { } let body = body_and_close.strip_suffix(CONTEXT_END_MARKER)?; - let body = body.strip_prefix('\n').unwrap_or(body); - let body = body.strip_suffix('\n').unwrap_or(body); + let body = body.strip_prefix('\n')?; + let body = body.strip_suffix('\n')?; Some(Self::new( InternalContextSource(source.to_string()),