# I Found a Hidden Switch That Puts Blue Links Back in ChatGPT

ChatGPT's logged-out web client carries an experiment that shows five classic search results, with title, snippet and domain, above or below its answer. I have never seen it switched on without being asked for. You can switch it on yourself with one URL parameter, as long as you are logged out. I ran it 72 times. The block came every time it was asked for, and never once without the switch.

Aleksandr Shamrai · Note · Published 2026-11-07 · Data dated Nov 2026
Source: https://shamrai.ai/chatgpt-blue-links

![The full ChatGPT window, logged out, after asking 'hotels near the eiffel tower under 200 euros' with force_guest_search=links_and_answer: the sidebar on the left, and above the answer a block of classic search results from hostelworld.com, kayak.com, fromparistoprovence.com and skyscanner.net, with the message box at the bottom.](https://shamrai.ai/chatgpt-blue-links/window-above-light.webp "`force_guest_search=links_and_answer`, logged out, US, 7 November 2026. The search results arrive above the answer; the fifth one sits behind the message box. Click to open full size.")

I found it while reading the code of the logged-out ChatGPT client for a larger study of how ChatGPT builds answers. As far as I can tell, nobody has written about it yet.

## Try it yourself (30 seconds)

1. Open a private browser window. Don't log in to ChatGPT.
2. Go to `https://chatgpt.com/?force_guest_search=links_and_answer`
3. Ask something you would normally google, for example *hotels near the eiffel tower under 200 euros*.

You get five search results on top, then the usual ChatGPT answer. Replace `links_and_answer` with `answer_and_links` and the same block moves below the answer.

![Screen recording: the same question on plain chatgpt.com, then with the parameter](https://shamrai.ai/chatgpt-blue-links/proof-switch.mp4 "The proof, recorded on 7 November 2026 in a logged-out browser: the same question on plain chatgpt.com, then with the parameter. Real time, nothing cut; only the label on top was added.")

![The full ChatGPT window with force_guest_search=answer_and_links: the end of the answer, then the classic search results from hostelworld.com and kayak.com below it, the rest of the block continuing behind the message box.](https://shamrai.ai/chatgpt-blue-links/window-below-light.webp "`answer_and_links`, same query, 7 November 2026: the answer ends, then the search results start. Click to open full size.")

It does not work when you are logged in. The switch exists only in the logged-out client; I checked the logged-in one by hand on November 6.

## What the code says

The logged-out client, in the build I downloaded on November 5, 2026, accepts five values for `force_guest_search`: `control_strict`, `control_broad`, `links_only`, `links_and_answer` and `answer_and_links`.

With the switch on, the answer stream carries two objects it doesn't normally carry:

- **A decision**: which variant you got, a query category, the version of the classifier that chose it, and a flag that says whether this is a preview. The category names read like a navigational-intent classifier.
- **A results set**: the links, each with URL, title, snippet and domain, plus a flag saying whether an answer comes with them. It arrives early in the stream, before the answer text.

The client also has telemetry for the list being classified, shown and clicked. In preview mode that telemetry is switched off, and I saw none of it in my runs.

None of this exists in the logged-in client I downloaded a day later.

## What I measured

Six queries, six cells: no parameter plus the five values, two repeats each. That is 72 logged-out runs on November 6, from the US, each in a fresh cloud browser, with the answer stream, the page text and a screenshot saved. The queries: *best linkedin automation tools*, *linkedin weekly invitation limit*, *expandi pricing*, *hotels near the eiffel tower under 200 euros*, *weather in lisbon tomorrow*, *who won the 2024 us presidential election*.

| Cell | Decision in the stream | Results block | What you see |
|---|---|---|---|
| no parameter | no | no | normal answer |
| `control_strict` | no | no | normal answer |
| `control_broad` | no | no | normal answer |
| `links_only` | yes, links off | no | normal answer |
| `links_and_answer` | yes | 5 links | links, then the answer |
| `answer_and_links` | yes | 5 links | the answer, then links |

The pattern held for every query and both repeats. The block appeared in 48 of 48 runs where it was requested, five links each time. Four queries had five distinct sites; the weather and election blocks each carried two links from the same site, so they look like four.

The links look like search results, not like the answer's citations. For the hotel query: Hostelworld, Kayak, Momondo, a travel blog (From Paris to Provence) and Skyscanner. For the election: Wikipedia twice, 270toWin, the American Presidency Project and Britannica.

![ChatGPT, logged out, asked who won the 2024 US presidential election with force_guest_search=links_and_answer: above the answer, classic results from en.wikipedia.org, 270towin.com and en.wikipedia.org again, with titles and snippets.](https://shamrai.ai/chatgpt-blue-links/election-above-light.webp "`links_and_answer`, the election question: Wikipedia twice in the same block.")

The answer itself is the usual answer. For the hotel query, every run, with or without the block, produced five hotel cards with photos. A map came in seven runs of twelve and a date-and-budget form in most, and that mix varied inside every cell, including the one without the parameter. In my runs, the switch added the block and did not change what the model wrote.

![The usual ChatGPT answer to the hotel question with no parameter: a map of Paris with hotel pins and a row of hotel cards with ratings.](https://shamrai.ai/chatgpt-blue-links/hotels-no-switch-light.webp "No parameter, the same hotel question: the usual answer, with hotel cards and a map.")

## Where the links come from

The list is the same in all four runs of a query: different sessions, different IP addresses, above or below. It does change over time: a day later, on November 7, four fresh runs of the hotel query all showed EuroCheapo in place of momondo, again identical in every run. It looks built from the query as typed, not from the model's own searches: without the block, the answer's sources shared at most one of the five domains with it.

It is not Google's or Bing's list either. Against each engine's top ten on November 7, five of the 30 URLs matched Google and five matched Bing, in a different order. The snippets are not written for the query: in 18 of the 25 pages I could fetch, the snippet is the page's own meta description.

My reading, with medium confidence, is that the block comes from OpenAI's own index[^1].

## Three things that surprised me

**"Links only" never replaces the answer.** The variant exists, the decision records it, but it comes back with links switched off and you get a normal answer. In 12 of 12 runs no list replaced an answer.

**The classifier calls everything navigational.** With the switch forced, all six queries got a navigational category, including the weather in Lisbon and the 2024 election. Every decision was flagged as a preview. My reading is that the parameter puts the client in a preview mode, so these categories say little about how real users would be routed.

**It never shows up on its own.** Since November 1 I have recorded about 1,800 ChatGPT turns, logged out and logged in. Without the parameter the experiment appeared zero times, including the 12 unforced runs in this test.

## What I think it means

For two years the story has been "AI answers replace the results page.[^2]" This experiment shows a more specific picture. The results page doesn't come back. One piece of it does, as one block inside an answer that ChatGPT assembles for the query.

The hotel answer already contains hotel cards with photos, sometimes a map, sometimes a booking form the model drew itself. The five blue links become one more component in that layout.

For anyone who works on search traffic, the practical question changes. Ranking in a list matters less than getting into the block, the card or the feed the answer is built from. And if this block ships, what it shows of your page is the page's own title and meta description.

## What I don't know

- Whether any real users get this without the parameter and how many.
- Whether the preview flag means the production version would route queries differently.
- Which index fills the block. The evidence points to OpenAI's own, but I compared one snapshot per engine, a day after the runs.
- Whether it will ship. Experiments in the client often never do.
- What a logged-in version, if any, looks like. The logged-in client I have doesn't contain this code.

## How I found it and the ground rules

I record ChatGPT's answer stream for research. For these runs the recorder was a script attached to the browser; it reads only what the page already receives and changes nothing. No clicks were made. The client code I mention is the JavaScript chatgpt.com sends to every visitor. I don't publish OpenAI's code. The only internal names in this note are the URL parameter and its five values, because you need them to try it. The 72 runs used fresh logged-out sessions and ordinary queries.

This note is part of a larger teardown of how ChatGPT builds an answer, from the first keystroke to the citation pill, based on 1,600 recorded answers and the bot logs of a test site. [Read the full teardown](https://shamrai.ai/how-chatgpt-works).

---

*Data: 72 runs on November 6, 2026, from the US, logged-out web client. Screenshots and the run table are available to researchers on request.*

[^1]: **For anyone who reads server logs**: The answer's citations arrive with `utm_source=chatgpt.com`, the block's URLs are clean.
[^2]: **SERPless**: I've started calling this SERPless: answering a search query without a results page, where the answer itself is the interface.

