Troubleshooting

The panel says “no issues” on an entry I know is wrong

Work down this list:

  • The rule is off. Passive voice, sentence length and grade level all ship disabled, and weasel words ships as a notice. Check the profile.
  • The field is excluded. A profile’s excluded fields list wins over everything.
  • The field type has no extractor. Plain Text, CKEditor, Redactor, Table and Matrix are covered, plus titles. A custom field needs an extractor.
  • The finding was dismissed. Dismissals are per element, per rule, per phrase — and they survive edits to the surrounding text.
  • You are looking at a cached result. cacheDuration defaults to 300 seconds. Press Check now, or set it to 0 while you are working things out.

A rule fires on something inside a code sample or a URL

Add the field to the profile’s excluded fields. RedPen keeps tags and entities from producing false positives, but it does not try to guess which prose is quoted material — and a rule that guesses wrong is worse than one you scoped by hand.

Clicking a finding does not highlight anything

The finding’s text has usually changed since the check ran. Press Check now to re-read the current field values. If it happens consistently on one field, that field’s extractor is producing offsets that do not map back — worth reporting, with the field type.

Saving is blocked and I cannot get past it

Only blockOnError can do this, and only for error-severity findings. Either fix the flagged text, or turn blockOnError off in config/redpen.php:

// config/redpen.php
return ['blockOnError' => false];

Dismissing the finding also clears the block, since a dismissed finding is not counted.

A queue job or a resave is crashing

Save-time validation is exempt from console requests, resaves and propagating saves precisely so this cannot happen. If you are seeing it, the crash is coming from somewhere else — check storage/logs/redpen.log with logLevel set to debug.

The LanguageTool backend never returns anything

  • The endpoint is empty. The backend reports itself unavailable and is skipped. That is by design, and it is why a missing endpoint never breaks a check.
  • The URL is not reachable from PHP. Inside DDEV or Docker, localhost is the container, not your machine — use http://host.docker.internal:8010.
  • It is pointed at the public API. RedPen will not call api.languagetool.org. See LanguageTool & AI for why.
  • It is timing out. A cold LanguageTool container takes a while on its first request. Raise languageToolTimeout.

The AI backend returns fewer suggestions than the model produced

Expected. RedPen does not trust a model’s character offsets — it re-locates each quoted phrase in the source itself and discards anything it cannot find. A suggestion that quotes text which is not actually in the field is dropped rather than shown against the wrong words.

A Pro feature says it needs Pro, but I bought Pro

A plugin’s edition lives in project config, not in a database column. If the edition was switched by a script rather than by the CLI or the control panel, the change can be left buffered and never written. Re-run:

php craft plugin/switch-edition redpen pro

Then confirm redpen.edition in config/project/project.yaml.

Where the logs are

storage/logs/redpen.log, at the level set by logLevel (default warning). Set it to debug to see each network request, its duration and the shape of the response. Entry content is not logged.

Still stuck

Open an issue at github.com/justinholtweb/craft-redpen with your Craft version, your PHP version, the rule id and the text that did or did not trigger it.