fix(han-research): say whether web search ran in every research report - #214
Merged
Merged
Conversation
On a Claude Code install backed by Amazon Bedrock the WebSearch tool does not exist. The research-analyst agent declared it, the harness dropped the unmatched entry silently, and the agent ran on WebFetch alone while its report read as though a full survey had happened (#212). The analyst now notices when WebSearch is not offered to it or a call is refused, gathers by fetch alone, and opens its return with one fixed "Web search:" line. The research skill copies that line into the top of every report under Confidence, shields it from the readability rewrite, passes it to the validator, and on any run where the value is not "used" charters a completeness check and names the gap under Remaining Risks. The agent's tools line, the skill's allowed-tools line, and the source registry are unchanged. The long-form docs say what happens without search and that the shipped agent cannot be given another search tool. Closes #212
… report returns Claude-Session: https://claude.ai/code/session_0153G6yzMfYhMa4yWHnNcLJ9
mxriverlynn
marked this pull request as ready for review
September 11, 2026 18:39
This was referenced Sep 11, 2026
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
WebSearchis not offered to it (or a call is refused), gathers by fetch alone, and opens its return with one fixed**Web search:**line:used, ornot available. ….researchskill copies that line into every report's Summary directly under Confidence, protects it from the readability rewrite, passes it to the validator, and on any run where the value is notusedadds a completeness check to the validator's charter and a fixed Remaining Risks entry. A missing line renders asnot reported. …and gets the same treatment.tools:line, the skill'sallowed-tools:line, theA#registry shape, andhan-core/agents/adversarial-validator.mdare unchanged. The long-form docs say what happens without search and that the shipped agent cannot be given a different search tool (a plugin agent cannot carry its own MCP server, and itstools:list cannot name a server the plugin does not know).docs/plans/gh-212-research-websearch-fallback/. Three things were deferred with reopening triggers: the GitHub/npm/PyPI fetch fallback chain, named MCP search patterns intools:, and a config setting naming a search tool.Why
On a Claude Code install backed by Amazon Bedrock (confirmed by the official docs; the reporter says Vertex too) the
WebSearchtool does not exist. A subagent'stools:list only narrows, so the unmatched entry was dropped silently and the analyst ran onWebFetchalone while its report read like a full survey. Nothing captured the fact at its origin and no downstream rule keyed on it. Fixes #212.How to verify
npm run lintpasses.han-research:research-analystdirectly on an Anthropic-backed install: the first line of its return is**Web search:** used./research smallon the same install: the report's Summary shows- **Web search:** useddirectly under Confidence, byte-identical after the readability pass, and the closing chat message says nothing about web search.han-research/skills/research/SKILL.mdagainst an imagined analyst return with no line: it yields thenot reportedliteral, and Step 7 then includes the completeness sentence./research smallshould render thenot availableline. Nobody on this project has one; the issue's reporter does, and asking them to paste a Summary is the concrete check.Risk / rollback
Low risk; markdown-only, revert via
git revert. The one thing to watch for is a Bedrock report carryingWeb search: used, which would mean the analyst did not take the no-search branch there (the protocol names both triggers, absent-from-list and refused-on-call, so it should hold under either observation).