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()),