API coverage

What chrome.* looks like inside Caspian, namespace by namespace. Anything not listed answers instead of throwing: unknown functions resolve to undefined, unknown on* members are events that never fire.

NamespaceStatusNotes
runtimeImplementedid, getURL, getManifest, sendMessage (sync/async/promise responses, sender with tab and origin), connect/onConnect ports, onMessage, onInstalled/onStartup, openOptionsPage, reload, getPlatformInfo, lastError. No native messaging.
storageImplementedlocal, sync (a second local area), session (memory), managed (empty). get/set/remove/clear/getKeys/getBytesInUse, onChanged globally and per area.
tabsImplementedquery (active, currentWindow, url patterns, status, audible), get, getCurrent, create, update (url, active, muted), remove, reload, duplicate, goBack/goForward, highlight, sendMessage, connect, executeScript/insertCSS (MV2), captureVisibleTab (current tab). onCreated/onUpdated/onActivated/onRemoved/onHighlighted.
windowsPartialgetCurrent/getAll/get, create (tabs in the front window), update (focus, minimize), remove.
action / browserAction / pageActionImplementedsetBadgeText, setBadgeBackgroundColor, setTitle, setIcon (paths), setPopup, openPopup, onClicked (fires when there is no popup).
scriptingImplementedexecuteScript (files, func + args), insertCSS, registerContentScripts / unregisterContentScripts / getRegisteredContentScripts.
declarativeNetRequestPartialStatic rulesets, dynamic (persisted) and session rules. block, allow, allowAllRequests, redirect (url, extensionPath, regexSubstitution, transform), upgradeScheme, modifyHeaders for request headers. Evaluated in Caspian's request interceptor, indexed by urlFilter token. No response-header rules, no matched-rule counts.
webRequestPartialObservation only: onBeforeRequest fires with urls/types filters honoured. Blocking listeners cannot cancel — the request has already gone out.
contextMenusImplementedcreate/update/remove/removeAll with contexts, parents and %s; entries in the page menu, grouped under the extension when it has several. onClicked with Chrome's info.
commandsImplementedManifest commands become window shortcuts (Caspian's own win a clash). onCommand; _execute_action opens the popup.
notificationsPartialcreate shows a Caspian toast; onClicked, onClosed. No buttons or progress.
alarmsImplementedIn-context timers; the background never sleeps, so they hold.
i18nImplementedgetMessage with placeholders and substitutions, getUILanguage, getAcceptLanguages.
offscreenImplementedcreateDocument/closeDocument/hasDocument — a hidden page that receives runtime messages.
webNavigationPartialonBeforeNavigate, onCommitted, onDOMContentLoaded, onCompleted for the main frame; getAllFrames.
permissionsAnswers onlycontains/request answer true: everything in the manifest is granted.
fontSettingsPartialgetFontList returns the system's families; the rest answers with defaults.
bookmarksPartialgetTree, search, create.
downloadsPartialdownload(url, filename).
search, identityPartialsearch.query opens a search; identity.launchWebAuthFlow opens the page in a tab and cannot capture the redirect.
history, cookiesAnswers onlyAnswer empty.
idle, privacy, management, tabGroups, tts, sidePanel, gcmAnswers onlySane defaults, no behaviour.
devtools, omnibox, userScripts, nativeMessagingNot availableNot available.
caspianImplementedCaspian's own: status(text, ms), theme(), version().

Manifest keys

Read: name, version, description, icons, action / browser_action / page_action (default_title, default_icon, default_popup), background (service_worker, scripts, page, type module), content_scripts (matches, exclude_matches, js, css, run_at, all_frames, match_about_blank, world), options_ui.page / options_page, permissions, host_permissions, commands, declarative_net_request, default_locale, web_accessible_resources (served regardless), chrome_url_overrides.newtab. Ignored: content_security_policy, devtools_page, side_panel, omnibox, minimum_chrome_version.

Engine-level behaviour

Extension pages fetch their host permissions without CORS through Keel's engine hook (Chromium's own exemption list, the same mechanism Chrome uses). Requests from extension pages carry Origin: chrome-extension://<id>. declarativeNetRequest rules run inside the request interceptor before Caspian's own blocker; a block, redirect or upgrade from any extension decides the request.

Missing something?
The coverage grows with what real extensions need. Tell us which API stopped yours at hello@getcaspian.app, with the extension's id.