{"version":"2.1.251","anchor":"plugin-paths-are-confined-to-their-marketplace-directory","canonical_anchor":"plugin-paths-are-confined-to-their-marketplace-directory","heading":"Plugin paths are confined to their marketplace directory","tier":"notice","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.251\/e\/plugin-paths-are-confined-to-their-marketplace-directory","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.251","markdown":"### Plugin paths are confined to their marketplace directory\n\nPlugin-supplied paths must stay inside their own marketplace directory or they're refused.\n\n**What**\n\nEvery path a plugin supplies is now resolved before use and refused unless it is a plain relative path that stays inside the marketplace's own directory. Absolute paths, `..` segments that climb out, network-style paths, and anything routed through a symlink are all rejected rather than resolved. This covers plugin and marketplace installs, replacing looser lookups, and extends to tools that take a directory path from a plugin, such as skill and filesystem tools.\n\n**Details**\n\n- A refused install path produces a message naming the offending path and directing you to give the marketplace entry a plain relative path.\n- For plugin-supplied directory arguments, the path must be canonical as well as local, so symlinked or relative-segment routes fail with `must be canonical` instead of being normalised.\n- Validation is unconditional and enforced at the schema level, with no flag, setting, or environment variable to relax it.\n\n**Evidence**\n\n`Plugin source path refused: ${or(e, 300)} does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path.`, `must be canonical`\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 2\/5"}