Reaching outside your project
web_search is read-only in the same sense as the file tools, no permission needed before it runs, but it reaches outside your project entirely rather than staying scoped to your codebase.
The cases where it matters most are the ones no amount of reading your own code would resolve on its own: current library documentation that has changed since the model's training, a recent breaking API change, or an error message that is faster to identify from a public report than to reason about from first principles.
Like the other read-only tools, its results feed back into the model's next decision the same way a file read would; nothing about being a web result instead of a local one changes how it is treated in the reasoning that follows.
A search is only reached for when it is genuinely useful, not on every turn as a matter of habit. A request that is fully answerable from your own code does not trigger a web search just because the tool exists; it is used specifically when the answer plausibly lives outside what your project itself can tell you.
Results are treated as a starting point for reasoning, not accepted uncritically; where a web result and the actual behavior of your own code disagree, what your code does in practice generally takes precedence in the model's conclusion.