Skip to content

Conversation

@rgarcia
Copy link
Contributor

@rgarcia rgarcia commented Jan 22, 2026

Summary

  • Extensions with webRequest permission that are missing update.xml and .crx files were returning 400 errors
  • This change falls back to the --load-extension approach instead, which works for unpacked extensions created by kernel extensions download-web-store
  • The ExtensionInstallForcelist approach (requiring update.xml + .crx) is still used when those files are present

Background

The v26 image added validation requiring extensions with webRequest permission to have update.xml and .crx files for ExtensionInstallForcelist. However, the kernel CLI's download-web-store command creates unpacked extensions without these files, causing extension loading to fail.

This fix allows falling back to the --load-extension flag approach when the policy files are missing, which is how v25 handled these extensions.

Test plan

  • Added TestWebRequestExtensionFallback e2e test
  • Verified test fails without the fix (returns 400)
  • Verified test passes with the fix (returns 201)
  • Test extension has webRequest permission but no update.xml/.crx
# Run the new test
cd server/e2e && go test -v -run TestWebRequestExtensionFallback -timeout 5m

🤖 Generated with Claude Code


Note

Allows unpacked extensions that trigger enterprise policy to load without update.xml/.crx by falling back to Chromium --load-extension flags.

  • In UploadExtensionsAndRestart, when an extension requires policy but is missing update.xml or a .crx, log and disable policy install, appending its path to --disable-extensions-except/--load-extension instead of returning 400
  • Continue updating enterprise policy entries; extract extension ID from update.xml when present
  • Add e2e TestWebRequestExtensionFallback and a minimal test-extension-webrequest (MV3, webRequest) to assert 201 response and basic chrome://extensions accessibility

Written by Cursor Bugbot for commit 569e408. This will update automatically on new commits. Configure here.

rgarcia and others added 2 commits January 22, 2026 12:17
Extensions with webRequest permission that are missing update.xml and
.crx files were returning 400 errors. This change falls back to the
--load-extension approach instead, which works for unpacked extensions
created by `kernel extensions download-web-store`.

The ExtensionInstallForcelist approach (requiring update.xml + .crx)
is still used when those files are present.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a test that verifies extensions with webRequest permission can be
loaded via --load-extension even when update.xml and .crx files are
missing.

The test:
1. Uploads an extension with webRequest permission (no update.xml/.crx)
2. Asserts the upload returns 201 (not 400)
3. Verifies chrome://extensions is accessible after the upload

This test would fail before the fix in chromium.go that falls back to
--load-extension when ExtensionInstallForcelist files are missing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rgarcia rgarcia requested a review from archandatta January 22, 2026 18:23
Copy link
Contributor

@archandatta archandatta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@rgarcia rgarcia merged commit a2dc561 into main Jan 22, 2026
5 checks passed
@rgarcia rgarcia deleted the fix/extension-loading-fallback branch January 22, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants