Add --no-extensions flag to disable extension discovery

Similar to --no-skills, this flag disables extension discovery and loading.
Useful for debugging or when extensions are causing issues.
This commit is contained in:
Carlos Villela 2026-01-06 23:53:01 -08:00
parent fcb3b4aa72
commit 48f524c554
No known key found for this signature in database
4 changed files with 37 additions and 7 deletions

View file

@ -294,8 +294,11 @@ function buildSessionOptions(
options.skills = [];
}
// Pre-loaded extensions (from early CLI flag discovery)
if (preloadedExtensions && preloadedExtensions.length > 0) {
// Extensions
if (parsed.noExtensions) {
options.extensions = [];
} else if (preloadedExtensions && preloadedExtensions.length > 0) {
// Pre-loaded extensions (from early CLI flag discovery)
options.preloadedExtensions = preloadedExtensions;
}
@ -317,16 +320,21 @@ export async function main(args: string[]) {
const firstPass = parseArgs(args);
time("parseArgs-firstPass");
// Early load extensions to discover their CLI flags
// Early load extensions to discover their CLI flags (unless --no-extensions)
const cwd = process.cwd();
const agentDir = getAgentDir();
const eventBus = createEventBus();
const settingsManager = SettingsManager.create(cwd);
time("SettingsManager.create");
// Merge CLI --extension args with settings.json extensions
const extensionPaths = [...settingsManager.getExtensionPaths(), ...(firstPass.extensions ?? [])];
const { extensions: loadedExtensions } = await discoverAndLoadExtensions(extensionPaths, cwd, agentDir, eventBus);
time("discoverExtensionFlags");
let loadedExtensions: LoadedExtension[] = [];
if (!firstPass.noExtensions) {
// Merge CLI --extension args with settings.json extensions
const extensionPaths = [...settingsManager.getExtensionPaths(), ...(firstPass.extensions ?? [])];
const result = await discoverAndLoadExtensions(extensionPaths, cwd, agentDir, eventBus);
loadedExtensions = result.extensions;
time("discoverExtensionFlags");
}
// Collect all extension flags
const extensionFlags = new Map<string, { type: "boolean" | "string" }>();