diegosouzapw/OmniRoute · error
Plugin '${name}' entry point escapes plugin directory
Error message
Plugin '${name}' entry point escapes plugin directory What it means
Error "Plugin '${name}' entry point escapes plugin directory" thrown in diegosouzapw/OmniRoute.
Source
Thrown at src/lib/plugins/manager.ts:398
// silently enforces nothing while the UI still reports it as active.
if (row.status === "active" && this.loadedPlugins.has(name)) return;
const manifest = JSON.parse(row.manifest) as PluginManifestWithDefaults;
// Path traversal guard: use realpath to resolve symlinks
const entryPoint = join(row.pluginDir, manifest.main);
let resolvedPluginDir: string;
try {
resolvedPluginDir = await realpath(row.pluginDir);
} catch {
throw new Error(`Plugin directory '${row.pluginDir}' does not exist`);
}
const resolvedEntry = await realpath(entryPoint).catch(() => null);
if (
!resolvedEntry ||
(!resolvedEntry.startsWith(resolvedPluginDir + sep) && resolvedEntry !== resolvedPluginDir)
) {
throw new Error(`Plugin '${name}' entry point escapes plugin directory`);
}
try {
const loaded = await loadPlugin(entryPoint, manifest);
const hookNames: LifecycleHookName[] = [
"onRequest",
"onResponse",
"onError",
"onInstall",
"onActivate",
"onDeactivate",
"onUninstall",
];
for (const hookName of hookNames) {
const handler = loaded.plugin[hookName];
if (typeof handler === "function") {
registerHook(hookName, name, handler as HookHandler);View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at src/lib/plugins/manager.ts:398 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/71c924ddb3886031.
Report an issue: GitHub.