Skip to content

Permission & Security Issues

Browser security features can sometimes block workflow execution. This guide helps you identify and resolve permission-related problems.

What it means: The extension doesn’t have permission to access the current website.

Quick fixes:

ProblemCauseSolution
Site not allowedExtension blocked on siteRight-click extension icon → “Allow on this site”
Incognito modePrivate browsing restrictionsEnable “Allow in incognito” in extension settings
Enterprise policyCompany restrictionsContact IT administrator
New tab pageSpecial browser pageNavigate to regular website first

Step-by-step solution:

  1. Right-click the extension icon in your browser toolbar
  2. Select “Allow on this site” or “Always allow”
  3. Refresh the page to apply new permissions
  4. Try your workflow again

Symptoms:

  • Workflows start but fail immediately
  • “Permission denied” in browser console
  • Some nodes don’t work on certain sites

Check current permissions:

// Verify extension permissions
chrome.permissions.getAll((permissions) => {
console.log('Granted permissions:', permissions);
});
// Test specific permission
chrome.permissions.contains({
permissions: ['activeTab', 'scripting']
}, (result) => {
console.log('Required permissions granted:', result);
});

Required permissions:

  • activeTab - Access current tab content
  • scripting - Inject content scripts
  • storage - Save workflow data
  • ⚠️ host permissions - Access specific websites

Symptoms:

  • “Refused to execute inline script” errors
  • Content extraction fails on secure sites
  • Workflows work on some sites but not others

Common CSP-protected sites:

  • Banking and financial websites
  • Government portals
  • Enterprise applications
  • Social media platforms (Facebook, LinkedIn)

Diagnostic table:

Error MessageCauseWorkaround
script-src 'self'Inline scripts blockedUse content script injection
frame-ancestors 'none'Iframe embedding blockedExtract from parent page
connect-src 'self'External requests blockedProcess data locally
unsafe-evalDynamic code execution blockedUse static extraction methods

Testing CSP restrictions:

// Check if CSP is blocking scripts
try {
eval('console.log("CSP allows eval")');
} catch (e) {
console.log('CSP blocks eval:', e.message);
}
// Test script injection
const script = document.createElement('script');
script.textContent = 'console.log("Script injection test")';
document.head.appendChild(script);

What causes this:

  • Trying to access content from different domains
  • Iframe content from external sources
  • API calls to restricted endpoints

Solutions by scenario:

ScenarioProblemSolution
Iframe contentCannot access cross-origin iframeExtract from parent page or use postMessage
External APICORS policy blocks requestUse server-side proxy or alternative endpoint
Subdomain accessDifferent subdomain restrictionsAdd subdomain to host permissions
HTTPS/HTTP mixedProtocol mismatchEnsure consistent protocol usage

Site Isolation:

  • Prevents access to cross-origin content
  • Affects iframe and embedded content extraction
  • Solution: Extract from main page content only

Enhanced Safe Browsing:

  • May block extension on suspicious sites
  • Can cause false positives on legitimate sites
  • Solution: Temporarily disable or add site exceptions

Strict Content Security:

  • More restrictive than Chrome by default
  • Blocks many content script injections
  • Solution: Use Firefox-compatible extraction methods

Tracking Protection:

  • May interfere with content detection
  • Blocks some dynamic content loading
  • Solution: Disable tracking protection for specific sites

Common enterprise restrictions:

Policy TypeEffectWorkaround
Extension whitelistOnly approved extensions allowedRequest IT approval
Site blockingCertain websites inaccessibleUse alternative data sources
Script executionJavaScript disabled on sitesUse server-side processing
Download restrictionsCannot save extracted dataUse cloud storage integration

Checking for enterprise policies:

// Check if running in managed environment
chrome.storage.managed.get(null, (items) => {
if (chrome.runtime.lastError) {
console.log('No enterprise policies');
} else {
console.log('Enterprise policies:', items);
}
});

Run in browser console:

// Comprehensive permission check
async function checkPermissions() {
const results = {
extensionId: chrome.runtime?.id || 'Not available',
permissions: {},
hostAccess: {},
errors: []
};
// Check basic permissions
const basicPerms = ['activeTab', 'scripting', 'storage'];
for (const perm of basicPerms) {
try {
const granted = await chrome.permissions.contains({permissions: [perm]});
results.permissions[perm] = granted;
} catch (e) {
results.errors.push(`Permission check failed for ${perm}: ${e.message}`);
}
}
// Check host access
try {
const granted = await chrome.permissions.contains({
origins: [window.location.origin + '/*']
});
results.hostAccess[window.location.origin] = granted;
} catch (e) {
results.errors.push(`Host access check failed: ${e.message}`);
}
console.log('Permission diagnostic results:', results);
return results;
}
checkPermissions();

Verify security context:

// Check page security context
const securityInfo = {
protocol: window.location.protocol,
isSecure: window.isSecureContext,
origin: window.location.origin,
csp: document.querySelector('meta[http-equiv="Content-Security-Policy"]')?.content || 'None',
referrerPolicy: document.referrerPolicy,
crossOriginIsolated: window.crossOriginIsolated
};
console.log('Security context:', securityInfo);
// Check for iframe restrictions
if (window !== window.top) {
console.log('Running in iframe - may have restrictions');
try {
console.log('Parent origin:', window.parent.location.origin);
} catch (e) {
console.log('Cannot access parent - cross-origin iframe');
}
}

Only request necessary permissions:

  • ✅ Use activeTab instead of broad host permissions when possible
  • ✅ Request permissions dynamically when needed
  • ✅ Explain why each permission is required
  • ❌ Don’t request <all_urls> unless absolutely necessary

Avoid security violations:

// Safe content extraction
function safeExtract(selector) {
try {
// Check if element exists and is accessible
const elements = document.querySelectorAll(selector);
if (elements.length === 0) {
return { error: 'No elements found', data: null };
}
// Extract content safely
const data = Array.from(elements).map(el => ({
text: el.textContent?.trim() || '',
html: el.innerHTML || '',
attributes: Object.fromEntries(
Array.from(el.attributes).map(attr => [attr.name, attr.value])
)
}));
return { error: null, data };
} catch (e) {
return { error: e.message, data: null };
}
}

Data protection guidelines:

  • 🔒 Never extract passwords or personal data without explicit user consent
  • 🔒 Use local storage for temporary data, avoid cloud storage for sensitive info
  • 🔒 Implement data encryption for stored workflow results
  • 🔒 Clear data regularly to minimize exposure risk

For specific sites:

  1. Navigate to the target website
  2. Click the extension icon in toolbar
  3. Select permission level:
    • “Allow on this site” - Current site only
    • “Allow on all sites” - All websites (use carefully)

For all sites (advanced users):

  1. Go to browser extension management (chrome://extensions/)
  2. Click on extension details
  3. Find “Site access” section
  4. Select “On all sites” (security risk - use cautiously)

Remove site access:

  1. Right-click extension icon
  2. Select “Block on this site”
  3. Confirm the action

Reset all permissions:

  1. Go to extension management
  2. Remove and reinstall extension
  3. Grant only necessary permissions

Request permissions as needed:

// Request permission for specific site
chrome.permissions.request({
origins: ['https://example.com/*']
}, (granted) => {
if (granted) {
console.log('Permission granted for example.com');
} else {
console.log('Permission denied');
}
});

If direct access is blocked:

Blocked MethodAlternative Approach
Content script injectionUse browser action popup
Cross-origin requestsServer-side proxy
File system accessCloud storage integration
Clipboard accessManual copy/paste workflow

If you’ve tried everything:

  1. Document the issue:

    • Exact error messages
    • Browser and extension versions
    • Steps to reproduce
    • Screenshots of permission settings
  2. Check known issues:

    • Review extension documentation
    • Search community forums
    • Check GitHub issues
  3. Contact support:

    • Provide detailed diagnostic information
    • Include permission diagnostic results
    • Mention any enterprise/corporate restrictions

While waiting for fixes:

  • Use alternative browsers for specific sites
  • Implement manual data entry workflows
  • Use browser bookmarklets for simple extractions
  • Export data in different formats

Before reporting permission issues: