{"record":{"id":"4e1ccbafee6d7bff","repo":"continuedev/continue","slug":"encodepackageslug-or-encodepackageidentifie","errorCode":null,"errorMessage":"${encodePackageSlug(...) or encodePackageIdentifier(blockIdentifier)} is block listed and can not be used.","messagePattern":"(.+?) is block listed and can not be used\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/config-yaml/src/load/unroll.ts","lineNumber":424,"sourceCode":"      return { section, blocks: null };\n    }\n\n    // Process all blocks in this section in parallel\n    const blockPromises = assistant[section].map(\n      async (unrolledBlock, index) => {\n        // \"uses/with\" block\n        if (\"uses\" in unrolledBlock) {\n          try {\n            const blockIdentifier = decodePackageIdentifier(unrolledBlock.uses);\n\n            if (\n              !isPackageAllowed(\n                blockIdentifier,\n                allowlistedBlocks,\n                blocklistedBlocks,\n              )\n            ) {\n              throw new Error(\n                `${\n                  blockIdentifier.uriType === \"slug\"\n                    ? encodePackageSlug({\n                        ownerSlug: blockIdentifier.fullSlug.ownerSlug,\n                        packageSlug: blockIdentifier.fullSlug.packageSlug,\n                      })\n                    : encodePackageIdentifier(blockIdentifier)\n                } is block listed and can not be used.`,\n              );\n            }\n\n            const blockConfigYaml = await resolveBlock(\n              blockIdentifier,\n              unrolledBlock.with,\n              registry,\n            );\n            const block = blockConfigYaml[section]?.[0];\n            if (block) {","sourceCodeStart":406,"sourceCodeEnd":442,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/config-yaml/src/load/unroll.ts#L406-L442","documentation":"During unrollBlocks, a referenced block's identifier matched the blocklist (or failed the allowlist) per isPackageAllowed, so expansion is refused with the offending encoded slug.","triggerScenarios":"Config references a block whose owner/package slug appears in blocklistedBlocks, or an allowlist is configured and the block is not on it, then parse/unroll runs.","commonSituations":"Security/policy restriction on third-party blocks, a typo'd slug accidentally matching a blocklist pattern, or inheriting allowlist config from a stricter environment.","solutions":["Remove the blocklisted block reference from your config or substitute an allowed block","If the block is legitimately needed, ask the config owner to remove it from blocklistedBlocks / add it to allowlistedBlocks","Double-check the slug spelling — an unintended match can trigger the blocklist"],"exampleFix":"// before\nblocks:\n  - some-block: evil-owner/bad-block\n# after\nblocks:\n  - some-block: trusted-owner/good-block","handlingStrategy":"validation","validationCode":"import { isPackageAllowed } from '...';\nconst allowed = isPackageAllowed(blockIdentifier, allowlistedBlocks, blocklistedBlocks);","typeGuard":null,"tryCatchPattern":"try { parseConfigYaml(yaml); } catch (e) { if (e.message.includes('block listed')) { /* swap or allow the block */ } }","preventionTips":["Keep allow/blocklists in one reviewed config","Test configs against current policy before deploy"],"tags":["blocklist","policy","blocks","security"],"backgroundTag":"blocked-by-policy","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}