Thanks Simeon for the answer.
Unfortunately, it seems like TrustedTypes enforcement isn't the cause of my extension's problems. I forced `require-trusted-types-for` using ModHeader and my extension worked fine (and in fact Google Docs doesn't show any CSP errors).
My summary was probably too vague but I think that since I set the script textContent from the content scripts isolated world and modify the DOM (by appending script to document.head) from the content script, it doesn't interact with the host page's CSP. (See below for full example of my content script)
The fact that the user saw the error at all might mean they have some other extensions modifying the page causing conflicts in some way so I'll reach out in the support tab thread. (Side note, it'd be great if we got proper markdown support when replying to support requests but even preserving newlines would help readability a lot!)
Thanks,
Erek
Content script for reference:
const injectedCode = `(function() {console.log('hi');})();`;
const script = document.createElement('script');
script.textContent = injectedCode;
(document.head || document.documentElement).appendChild(script);
script.remove();