Two worlds, one DOM
Chromium gives every content script its own "isolated world": a fresh V8 context with a distinct window, distinct prototypes, and distinct built-ins. The DOM tree is shared -- you can read and modify elements -- but the JavaScript objects are not. This is why an extension can rewrite page text but cannot intercept the page calling navigator.userAgent from script. The two contexts see the same nodes through different lenses.
Why your hook silently does nothing
This is the classic first failure of a browser-instrumentation project. You write window.fetch = wrappedFetch in a content script, reload, and see no logs -- because the page is calling its window.fetch, not yours. Nothing errors; it just does not work. The isolation is total for built-ins and globals: there is no flag that lets a content script reach across into the page's world.
The way around it
The escape hatch is to stop hooking from the isolated world and instead make your code run as page script. Historically that meant injecting a <script> tag into the DOM; the cleaner approach is the DevTools protocol's addScriptToEvaluateOnNewDocument, which runs your code in the page's own context before any page script loads. But even then, a wrapper you install in the page world is still a JavaScript function that does not look native -- so the isolated-world problem is only the first of several.
