prompts in Plannotator’s config.json. Plan and document feedback use the plan and annotate sections. Code review uses the separate review section.
The file is <data-directory>/config.json. The data directory is normally ~/.plannotator, but PLANNOTATOR_DATA_DIR or an absolute XDG_DATA_HOME can change it. Plannotator reads the file again when it generates the next supported feedback message, so you do not need to restart it.
Plan and document feedback
Useprompts.plan for an agent’s plan-review decision:
{{feedback}} in a template that should return your annotations. If you remove it, the template still runs, but the exported annotations are omitted from the message.
Use
prompts.annotate when a supported agent wrapper formats annotations on a file, folder, or assistant message:
The annotation transport determines whether Plannotator applies a template:
Code-review feedback
Useprompts.review for the result of plannotator review, including local changes, pull requests, and merge requests:
A
review.denied override replaces only the built-in suffix. It leaves the annotations unchanged. Plannotator adds the suffix only when the submitted review has annotations.
These settings do not change the instructions used by Ask AI or by an AI review job launched inside code review. Those jobs use their own prompts and any enabled global Agent Skills.
Agent-specific overrides
Place an override underruntimes inside the relevant section:
claude-code, amp, droid, kiro-cli, opencode, copilot-cli, pi, codex, and gemini-cli.
For any key, Plannotator chooses the first non-blank string in this order:
prompts.<section>.runtimes.<runtime>.<key>prompts.<section>.<key>- A built-in value for that runtime, when one exists
- The built-in general value
{{placeholder}} remains unchanged in the returned message. A missing or malformed config file falls back to built-in behavior; malformed JSON also writes a warning to standard error.
Placeholder values
Check your change
- Add a short marker such as
[custom-plan-feedback]to one template. - Run the matching supported flow. For example, request a plan change for
plan.denied, send an annotated code review forreview.denied, or annotate a file through OpenCode, Pi, or Amp forannotate.fileFeedback. - Make sure that the returned message contains the marker and the expanded placeholders.
- Remove the marker after you identify the selected key and runtime.
