<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>306194</bug_id>
          
          <creation_ts>2026-01-24 17:25:46 -0800</creation_ts>
          <short_desc>Partitioned cookies (CHIPS) are dropped on return after multi-hop cross-site redirects</short_desc>
          <delta_ts>2026-01-28 17:23:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>Safari 26</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>kian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>kian</cc>
    
    <cc>m_finkel</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2174813</commentid>
    <comment_count>0</comment_count>
    <who name="">kian</who>
    <bug_when>2026-01-24 17:25:46 -0800</bug_when>
    <thetext>Safari drops Partitioned cookies (SameSite=None; Secure; Partitioned) after a multi-hop cross-site redirect chain, even when the final navigation returns to the original top-level site. Non-partitioned cookies set at the same time are preserved.

This breaks many OAuth / OIDC-style login flows that use partitioned cookies.

I&apos;ve created a minimal, self-contained reproduction using three domains. Source code and live demo are available:

    - GitHub repo: https://github.com/kiancross/safari-partitioned-cookie-bug-demo
    - Live demo: https://safari-partitioned-cookie-bug-demo.kiancross.workers.dev

To reproduce:

    1. Visit Domain A (start page).

    2. Click &quot;Start test&quot;.

    3. Domain A:
        - Sets two cookies:
               np_cookie=np1; SameSite=None; Secure
               p_cookie=p1; SameSite=None; Secure; Partitioned

        - Responds with a 302 redirect to Domain B.

    4. Domain B immediately 302s to Domain C.

    5. Domain C immediately 302s back to Domain A (/return).

    6. Domain A prints the incoming Cookie header.

Expected Result: Both cookies set on Domain A (np_cookie and p_cookie) should be sent back to Domain A when the navigation returns.

Actual Result: The non-partitioned cookie (np_cookie) is present. The partitioned cookie (p_cookie) is missing from the Cookie header on the return request.

I have reproduced this reliably on Safari 26.2 for both MacOS and iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2174814</commentid>
    <comment_count>1</comment_count>
    <who name="">kian</who>
    <bug_when>2026-01-24 17:27:05 -0800</bug_when>
    <thetext>Additional Details:

The issue only appears after multiple cross-site redirects (A -&gt; B -&gt; C -&gt; A). A redirect chain involving only a single cross-site hop (A -&gt; B -&gt; B -&gt; A) does not reproduce the problem.

Pausing the redirect chain at Domain B (e.g., 200 OK response and explicit user interaction) then continuing the flow (A -&gt; B (user input) -&gt; C -&gt; A), does not change the outcome. The critical step appears to be the final B -&gt; C -&gt; A redirect sequence.

When pausing at Domain B, the cookies can be verified as present and correctly set (e.g., by opening Domain A in another tab). However, those same cookies are not sent to Domain A when returning via the final redirect chain.

In the live demo I&apos;ve provided, after arriving back at Domain A through the redirect chain, refreshing the page causes the partitioned cookies to appear as expected.

Opening the live demo in Chrome shows the expected behaviour: both partitioned and non-partitioned cookies are sent on the return request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2174828</commentid>
    <comment_count>2</comment_count>
    <who name="">kian</who>
    <bug_when>2026-01-24 19:28:34 -0800</bug_when>
    <thetext>(I&apos;ve also submitted this on Apple Feedback Assistant, as I suspect this might have been the wrong place to submit. If so, feel free to close this issue.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2175334</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-01-26 19:56:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/168969702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2176025</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2026-01-28 17:23:13 -0800</bug_when>
    <thetext>rdar://168850589</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>