continuedev/continue · error · Error
${encodePackageSlug(...) or encodePackageIdentifier(blockIde
Error message
${encodePackageSlug(...) or encodePackageIdentifier(blockIdentifier)} is block listed and can not be used. What it means
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.
Source
Thrown at packages/config-yaml/src/load/unroll.ts:424
return { section, blocks: null };
}
// Process all blocks in this section in parallel
const blockPromises = assistant[section].map(
async (unrolledBlock, index) => {
// "uses/with" block
if ("uses" in unrolledBlock) {
try {
const blockIdentifier = decodePackageIdentifier(unrolledBlock.uses);
if (
!isPackageAllowed(
blockIdentifier,
allowlistedBlocks,
blocklistedBlocks,
)
) {
throw new Error(
`${
blockIdentifier.uriType === "slug"
? encodePackageSlug({
ownerSlug: blockIdentifier.fullSlug.ownerSlug,
packageSlug: blockIdentifier.fullSlug.packageSlug,
})
: encodePackageIdentifier(blockIdentifier)
} is block listed and can not be used.`,
);
}
const blockConfigYaml = await resolveBlock(
blockIdentifier,
unrolledBlock.with,
registry,
);
const block = blockConfigYaml[section]?.[0];
if (block) {View on GitHub (pinned to 5522c6f44c)
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
Example fix
// before blocks: - some-block: evil-owner/bad-block # after blocks: - some-block: trusted-owner/good-block
Defensive patterns
Strategy: validation
Validate before calling
import { isPackageAllowed } from '...';
const allowed = isPackageAllowed(blockIdentifier, allowlistedBlocks, blocklistedBlocks); Try / catch
try { parseConfigYaml(yaml); } catch (e) { if (e.message.includes('block listed')) { /* swap or allow the block */ } } Prevention
- Keep allow/blocklists in one reviewed config
- Test configs against current policy before deploy
When it happens
Trigger: 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.
Common situations: Security/policy restriction on third-party blocks, a typo'd slug accidentally matching a blocklist pattern, or inheriting allowlist config from a stricter environment.
Related errors
- Only rule files can be deleted
- Config not loaded
- Reading or Editing ${filepath} is not allowed because it is
AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27).
Data as JSON: /api/errors/4e1ccbafee6d7bff.
Report an issue: GitHub.