SOP 006: Manage Chrome Extensions
Fresh| Field | Value |
|---|---|
| SOP ID | SOP-006 |
| Version | 1.0 |
| Status | Active (Beta) |
| Source | Steel Extensions API |
Overview
Add Chrome extensions to Steel sessions. Extensions are stored globally per organization and can be injected into any session.
Prerequisites
- Steel account with API key
- Extension file (.zip/.crx) or Chrome Web Store URL
Extension Lifecycle
Procedure
Step 1: Upload Extension from File
typescript
await client.extensions.upload({
file: fs.readFileSync('extensions/recorder/recorder.zip')
});Step 2: Upload from Chrome Web Store
typescript
await client.extensions.upload({
url: "https://chromewebstore.google.com/detail/extension-name/extension-id"
});Step 3: Inject into Sessions
typescript
// Inject ALL org extensions
const session = await client.sessions.create({
extensionIds: ['all_ext']
});
// Inject specific extensions
const session = await client.sessions.create({
extensionIds: ['extensionId_1', 'extensionId_2']
});Step 4: Manage Extensions
typescript
// List all extensions
const extensions = await client.extensions.list();
// Update extension from file
await client.extensions.update("{extensionId}", {
file: fs.readFileSync("extensions/recorder2/recorder2.zip")
});
// Update from Chrome Web Store
await client.extensions.update("{extensionId}", {
url: "https://chromewebstore.google.com/detail/.../..."
});
// Delete single extension
await client.extensions.delete("{extensionId}");
// Delete ALL extensions
await client.extensions.deleteAll();Requirements
- Extensions need a
manifest.jsonfile - Supported formats:
.zipand.crx - Extensions are loaded when the session starts
- Communication via Chrome DevTools Protocol (CDP)
Verification Checklist
- [ ] Extension uploaded successfully
- [ ] Extension appears in
client.extensions.list() - [ ] Session starts with extension injected
- [ ] Extension functionality works in session
Troubleshooting
| Issue | Solution |
|---|---|
| Upload fails | Verify manifest.json exists, check file format (.zip/.crx) |
| Extension not loading | Ensure extensionIds includes correct ID or 'all_ext' |
| Extension crashes session | Test extension locally first, check compatibility |