Skip to content

🐛 Plugins defined in child config don't work when using extends: "//" #8360

@JacquesLeupin

Description

@JacquesLeupin

Environment information

CLI:
  Version:                      2.2.5
  Color support:                true

Platform:
  CPU Architecture:             aarch64
  OS:                           macos

Environment:
  BIOME_LOG_PATH:               unset
  BIOME_LOG_PREFIX_NAME:        unset
  BIOME_CONFIG_PATH:            unset
  BIOME_THREADS:                unset
  NO_COLOR:                     unset
  TERM:                         xterm-256color
  JS_RUNTIME_VERSION:           v20.19.3
  JS_RUNTIME_NAME:              node
  NODE_PACKAGE_MANAGER:         pnpm/10.16.0

Biome Configuration:
  Status:                       Loaded successfully
  Path:                         /Users/jleupin/app-components/biome.json
  Formatter enabled:            true
  Linter enabled:               true
  Assist enabled:               true
  VCS enabled:                  false

Workspace:
  Open Documents:               0

What happened?

When using extends: "//" to extend from a parent biome.json, GritQL plugins defined in the child configuration don't execute against files in that package.

Environment
Biome version: 2.2.5

OS: macOS

Reproduction

Monorepo structure:

/
├── biome.json          # root config
└── packages/
    └── mobile/
        ├── biome.json  # extends from root
        └── biome-plugins/
            └── my-plugin.grit

Root biome.json:

{
  "$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
  "linter": {
    "enabled": true
  }
}

Child packages/mobile/biome.json:

{
  "$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
  "extends": "//",
  "plugins": ["./biome-plugins/my-plugin.grit"],
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

Plugin packages/mobile/biome-plugins/my-plugin.grit

`$x as unknown as $y` where {
    register_diagnostic(
        span = $x,
        message = "Found pattern",
        severity = "warn"
    )
}

Expected result

Expected Behavior

Running biome lint src/some-file.tsx from packages/mobile/ should execute the plugin and report diagnostics.

Actual Behavior

The plugin loads without error, but no diagnostics are reported. Running biome search with the same pattern finds matches, but biome lint doesn't trigger the plugin.

Additional Notes

  • The plugin file is readable and the path resolves correctly (no "Cannot read file" error)
  • biome search with the same GritQL pattern finds matches
  • Files outside the workspace (e.g., /tmp/test.ts) work correctly with the plugin
  • Only files within the package that uses extends are affected

Code of Conduct

  • I agree to follow Biome's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    S-Needs triageStatus: this issue needs to be triaged

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions