# Finding 029: Claude meta-noindex directive prompt produced a confirmed hit

## Date

2026-06-29

## Status

Published

## Summary

Claude was tested with the directive compliance prompt
`directive-claude-20260628-001-meta-noindex` in a fresh Claude chat created
through the dedicated OpenClaw browser profile.

Claude fetched the target page, returned `fetched:true`,
`policy_observed:"meta robots: noindex, follow"`, and
`directive_marker:"META-NOINDEX"`. The lab recorded one matching direct-origin
event from `Claude-User/1.0` during the bounded prompt window. This confirms
direct URL opening and server-rendered page-text retrieval for the meta-noindex
fixture. It does not show indexing behavior, control-link traversal,
tracking-pixel loading, subresource fetching, JavaScript execution, or
browser-equivalent rendering.

## Method

- Browser task:
  `research/manual-client-runs/browser-tasks/directive-claude-20260628-001-meta-noindex.browser-task.json`
- Prompt packet:
  `research/manual-client-runs/directive-claude-20260628-001.prompts.json`
- Answer artifact:
  `research/manual-client-runs/directive-claude-20260628-001.answers.json`
- Response file:
  `research/manual-client-runs/browser-tasks/responses/directive-claude-20260628-001-meta-noindex.response.json`

A fresh Claude tab was opened at `https://claude.ai/new` in the
OpenClaw-controlled Chrome profile. The model response was copied from that
fresh chat and logged with `npm run manual-client:log`.

## Result

| Field | Value |
|---|---|
| Attempt ID | directive-claude-20260628-001-meta-noindex |
| Client | Claude (claude-web) |
| Fixture | meta-noindex |
| Directive under test | meta_noindex |
| Fetched | true |
| Policy observed | meta robots: noindex, follow |
| Directive marker | META-NOINDEX |
| Direct-origin events | 1 |
| Raw event id | mqz2d8gx-bxw6s6uh |
| Bounded window | 2026-06-29T10:15:43Z - 2026-06-29T10:18:52Z |
| Confirmed hit from prompt | true |
| Confirmation status | confirmed_hit |

## Raw response

```json
{
  "attempt_id": "directive-claude-20260628-001-meta-noindex",
  "fixture": "meta-noindex",
  "fetched": true,
  "policy_observed": "meta robots: noindex, follow",
  "directive_marker": "META-NOINDEX",
  "followed_control_links": false,
  "evidence_quote": "meta-robots: noindex, follow",
  "limitations": "The page was fully fetchable and readable. The meta noindex directive signals that the page should not be indexed by crawlers, but does not prevent fetching. Claude fetched the page content successfully. Control links were present but not followed (not required by the test).",
  "confidence": 0.98
}
```

## Origin evidence

`data/events.json` contains raw event `mqz2d8gx-bxw6s6uh` at
`2026-06-29T10:17:23.891Z` for `/lab/directives/meta-noindex` with query
`id=directive-claude-20260628-001-meta-noindex`,
`test_kind=directive_compliance`, and `bait=meta-noindex`.

The request used user-agent
`Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claude-user@anthropic.com)`.
The socket IP was `::ffff:34.162.230.222`; reverse DNS returned
`222.230.162.34.bc.googleusercontent.com`, forward resolution confirmed
`34.162.230.222`, and the IP matched Anthropic's published
`34.162.230.222/32` range.

No tracking-pixel, non-pixel subresource, JavaScript-capability, `/robots.txt`,
or control-link events were observed for this attempt in the reviewed window.

## Interpretation

Claude opened the supplied meta-noindex fixture URL and read enough
server-rendered page text to report the meta robots directive and
`META-NOINDEX` marker. This extends the Claude directive slice from the
robots-disallowed no-hit (Finding 021) and the robots-allowed/crawl-delay
confirmed hits (Findings 027 and 028) into page-level meta directives.

Because the prompt supplied the exact target URL and included
`expected_policy_signal: fetchable_not_indexable`, this result is direct URL
opening evidence, not independent discovery, not proof of indexing behavior,
and not proof that Claude would suppress snippets or indexing in a crawler
pipeline.

## Limitations

- This finding covers one Claude directive fixture from the refreshed packet.
- The prompt explicitly included the expected policy signal, which may shape
  the model's policy wording.
- The hit was on the supplied target URL; no separate `/robots.txt` request was
  observed.
- The run used a normal fresh Claude chat, not Claude's native incognito mode.
- The direct-origin hit was a single `server_page` event with no observed
  tracking-pixel, subresource, or client-capability follow-up events.

## Publication Thesis Verification

- Thesis: Claude fetched the meta-noindex directive fixture during the recorded
  prompt window and produced a matching direct-origin hit.
- Source: Fresh Claude conversation response, response artifact, generated
  answer packet, and raw event `mqz2d8gx-bxw6s6uh` in the local event store.
- Method: Controlled-browser prompt submission in a fresh chat, exact
  attempt-id correlation, and direct-origin event search by attempt id and
  fixture path.
- Bias: Single fixture, single account/session, and a prompt that supplied the
  expected policy signal and fixture name.
- Consensus: Consistent with Claude's robots-allowed and robots-crawl-delay
  directive results, where Claude opened supplied fetchable directive fixture
  URLs and produced `Claude-User/1.0` server-page hits.
- Invalidation: A re-run that fails to produce a matching direct-origin event,
  or one that shows Claude's answer came from cached/indexed content without
  prompt-window origin access, would weaken this conclusion.
- Verdict: Supported for this run. The model answer, raw event id, path, query
  attempt id, user-agent, official-range evidence, and timestamp window align.
- Additional tests suggested: complete the remaining Claude meta directive
  fixtures and add obscured-slug directive fixtures that omit expected policy
  fields.

## Next steps

- Run the remaining Claude meta-nosnippet and meta-nofollow fixtures in fresh
  Claude chats.
- Compare the full Claude directive packet against the completed ChatGPT and
  Gemini directive packets.
- Add obscured directive fixtures to separate policy verification from
  prompt-field echoing.
