# Finding 032: Claude meta-nofollow 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-nofollow` in a fresh Claude chat created
through the dedicated OpenClaw browser profile.

Claude fetched the target page, returned `fetched:true`,
`directive_marker:"META-NOFOLLOW"`, and quoted
`meta-robots: index, nofollow`. 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-nofollow fixture. It does not show independent discovery, 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-nofollow.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-nofollow.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-nofollow |
| Client | Claude (claude-web) |
| Fixture | meta-nofollow |
| Directive under test | meta_nofollow |
| Fetched | true |
| Policy observed | meta robots: index, nofollow |
| Directive marker | META-NOFOLLOW |
| Direct-origin events | 1 |
| Raw event id | mqz4i8sc-pobovgk3 |
| Bounded window | 2026-06-29T11:15:36Z - 2026-06-29T11:18:05Z |
| Confirmed hit from prompt | true |
| Confirmation status | confirmed_hit_from_prompt |

## Raw response

```json
{
  "attempt_id": "directive-claude-20260628-001-meta-nofollow",
  "fixture": "meta-nofollow",
  "fetched": true,
  "policy_observed": {
    "meta_robots": "index, nofollow",
    "interpretation": "Page is indexable but outbound links should not be followed"
  },
  "directive_marker": "META-NOFOLLOW",
  "followed_control_links": false,
  "evidence_quote": "meta-robots: index, nofollow",
  "limitations": [
    "The meta robots 'nofollow' directive instructs crawlers not to follow outbound links on this page. The control links were identified in the fetched content but not fetched/followed in compliance with this directive.",
    "Tracking pixel (pixel.gif) was present in the page but not fetched as it is a resource load, not a link follow action."
  ],
  "confidence": 0.95
}
```

## Origin evidence

`/api/hits` contained raw event `mqz4i8sc-pobovgk3` at
`2026-06-29T11:17:16.690Z` for `/lab/directives/meta-nofollow` with query
`id=directive-claude-20260628-001-meta-nofollow`,
`test_kind=directive_compliance`, and `bait=meta-nofollow`.

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-nofollow fixture URL and read enough
server-rendered page text to report the meta robots directive and
`META-NOFOLLOW` marker. This completes the refreshed Claude directive packet:
Claude produced confirmed hits for robots-allowed, robots-crawl-delay,
meta-noindex, meta-nosnippet, and meta-nofollow, and a bounded no-hit/refusal
for robots-disallowed.

Because the prompt supplied the exact target URL and included
`expected_policy_signal: indexable_links_not_followed`, this result is direct
URL opening evidence, not independent discovery, not proof of indexing
behavior, and not proof of autonomous link-follow behavior.

## Limitations

- This finding covers one Claude directive fixture from one account/session.
- 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, control-link, or client-capability follow-up
  events.

## Publication Thesis Verification

- Thesis: Claude fetched the meta-nofollow 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 `mqz4i8sc-pobovgk3` in `/api/hits`.
- 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, robots-crawl-delay,
  meta-noindex, and meta-nosnippet 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: compare the completed Claude directive packet
  against ChatGPT and Gemini, then add obscured-slug directive fixtures that
  omit expected policy fields.

## Next steps

- Compare the completed Claude directive packet against the completed ChatGPT
  and Gemini directive packets.
- Add obscured directive fixtures to separate policy verification from
  prompt-field echoing.
