Customer impact began (stable rollout start): 2025-12-09
Investigation Started: 2025-12-17
Incident Declared (UTC): 2025-12-30 13:13
Fixed Release First Available: 2026-01-01
Fixed Release Fully Available and Verified: 2026-01-05
Incident Marked Resolved (UTC): 2026-01-05 02:15
Service(s) Affected: 1Password browser extension
The 1Password browser extension, which works by injecting code into web pages, inadvertently included code from PrismJS, a third party dependency, breaking syntax highlighting on some websites that display code blocks. The issue was reported in beta in early December, escalated after additional customer reports and a report from an external partner, and required releasing a stable update to remove the problematic dependency chain. This issue affected page rendering only and did not expose vault data or credentials.
Customers experienced broken code-block syntax highlighting on websites with <code> HTML elements while using the 1Password browser extension version 8.11.22 across all major browsers.
The injected content script in the 1Password browser extension was able to include UI-related dependencies from other parts of the 1Password codebase in a context where they should not exist. This happened due to a small change that accidentally pulled in additional libraries caused by insufficient restrictions/guardrails on what dependencies could be imported into injected scripts.
Detection and Escalation:
On December 3, 2025, we received a beta report that syntax highlighting was broken when the 1Password extension was enabled. That report was incorrectly tagged and did not reach the owning team for timely triage, so we did not recognize it as a potential release blocker before version 8.11.22 rolled out to stable on December 9, 2025.
On December 17, 2025, an external partner reported the issue affecting stable. That report was routed correctly, we connected it to the earlier beta issue, and we began investigation and remediation.
Timeline of Events (UTC):
Root Cause Analysis: We did not have an enforced dependency boundary for injected content scripts, which allowed unexpected UI and runtime dependencies to be bundled into the page-injected context.
Trigger: A new import introduced an indirect dependency chain from an injected script to a UI module and ultimately to PrismJS.
Contributing Factors (if any):
We removed PrismJS from the scripts the extension injects into web pages by eliminating the import chain that pulled it into the injected bundle. We then shipped an updated extension across all supported browsers.
Mitigation Steps:
Resolution Steps:
Verification of Resolution:
We are committed to providing a reliable and stable service, and we are taking the necessary steps to learn from this event and prevent it from happening again. Thank you for your understanding.
Sincerely,
The 1Password Team