{"record":{"id":"77e954f3a787d6c5","repo":"paperclipai/paperclip","slug":"plugin-config-pluginkey-does-not-declare-envi","errorCode":null,"errorMessage":"Plugin \"${config.pluginKey}\" does not declare environment driver \"${config.driverKey}\".","messagePattern":"Plugin \"(.+?)\" does not declare environment driver \"(.+?)\"\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/environment-runtime.ts","lineNumber":2900,"sourceCode":"\n  /**\n   * Resolve the effective capability snapshot for one sandbox lease. This is\n   * the sandbox driver's implementation of the general capability-resolution\n   * method: it gates through {@link ENVIRONMENT_DRIVER_CAPABILITY_SUPPORT}'s\n   * `sandbox` support (the whole set, so this gate adds no restriction beyond\n   * declaration, verification, and narrowing), then reads the per-lease\n   * declaration, the live verified worker methods, and the per-lease\n   * narrowing, exactly as the runtime resolved them before this method\n   * existed.\n   */\n  async function resolveSandboxCapabilitiesForLease(\n    input: EnvironmentDriverLeaseInput,\n  ): Promise<EffectiveExecutionCapabilities> {\n    const metadata = input.lease.metadata ?? {};\n    const providerKey =\n      readString(metadata.provider) ??\n      (input.environment.driver === \"sandbox\"\n        ? readString((parseEnvironmentDriverConfig(input.environment).config as SandboxEnvironmentConfig).provider)\n        : null);\n    if (!providerKey) {\n      return classifyEnvironmentCapabilities({\n        verifiedMethods: [],\n        declared: null,\n        narrowing: null,\n        supportedCapabilities: ENVIRONMENT_DRIVER_CAPABILITY_SUPPORT.sandbox.supportedCapabilities,\n      });\n    }\n\n    let declared: SandboxProviderCapabilities | null = null;\n    let verifiedMethods: readonly string[] = [];\n    let configResolutionFailed = false;\n\n    if (metadata.sandboxProviderPlugin) {\n      const pluginId = readString(metadata.pluginId);\n      // Read the declaration from the exact plugin that acquired the lease,\n      // not the first installed plugin with this driver key. A driver key is","sourceCodeStart":2882,"sourceCodeEnd":2918,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/environment-runtime.ts#L2882-L2918","documentation":"Manifest-contract failure in resolvePluginDriver: the plugin (config.pluginKey) is ready, but its manifest's environmentDrivers list contains no driver with driverKey === config.driverKey. The environment references a driver the plugin never declared, so the driver cannot be resolved and the call is rejected.","triggerScenarios":"Thrown at server/src/services/environment-runtime.ts:2713 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the environment config to reference an environment driver the plugin actually declares.","Update the plugin to declare the requested driver key."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}