Skip to content

Host support: Aider — explicit read-only instruction loading and configuration-safe content installation #713

Description

@ScriptedAlchemy

Scope / research evidence

P2 feature expansion, limited initially to verified content and command configuration. Research date 2026-09-06; Agent Bundle baseline 5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Official Aider docs were read; no native session or model invocation was run.

Ponytail lists Aider among instruction-file consumers. The documented supported mechanism is explicit read-only context, not proof that every file named AGENTS.md is auto-discovered. No general native plugin-package manifest, arbitrary MCP-client registration, or full lifecycle-hook protocol was established by the official references below. Do not invent those APIs or advertise an unofficial fork/bridge as stock Aider support.

Primary documentation and configuration references

Pin actual Aider/package version and parser behavior before shipping an automated installer. These references establish a small host tier, not a negative assertion that no future native extension capability can exist.

Proposed first projection

Use the current canonical content renderer to produce a compact authored instruction document and supporting files. Keep a small plugin small; it does not need an MCP server, JSX conversion, Python extension, or persistent process.

consumer-project/
  .aider.conf.yml                  # optional receipt-owned read-list patch
  agent-instructions/review.md
  agent-instructions/resources/...

Immediate operator use requires no config mutation:

aider --read ./agent-instructions/review.md

Inside a session use the native /read-only command; the conventions guide also illustrates its /read shorthand. Do not use /add for guidance intended to remain outside the editable target set.

Persistent configuration can extend the user's existing read list:

read:
  - AGENTS.md
  - agent-instructions/review.md

Only include AGENTS.md when it exists and the operator intends it as context. Do not overwrite that file with a host-generated substitute. A references link is not proof that all supporting content is automatically loaded; preserve explicit loading semantics and test the intended instruction set.

Scope, precedence and update behavior

Aider reads YAML from home, repository root and current directory, with later files taking priority. --config selects a single configuration rather than merging the normal chain. Consequently a generated --config wrapper can accidentally hide the user's model, permission or read-list settings; it must not be the default installation shortcut.

Normalize scalar/list forms of read without dropping unrelated entries or duplicating a previously installed file. Resolve relative paths in the host's real working/configuration context, including nested execution and paths with spaces. Editing or removing a disk config does not automatically revoke content already loaded into a running conversation; document when a new session is necessary rather than claim runtime hot-unload.

Aider can create commits and manages its own history/configuration. An Agent Bundle install is a file/config binding operation, not authorization to commit user changes, modify model settings, change shell environment or purge .aider histories. Use receipt ownership and refuse to clobber edited/foreign content.

Executable integration boundary

Aider documents lint and test commands that feed results back into its editing loop. Lint commands receive file paths; test commands have their own invocation shape, with optional automatic testing after edits. These are not pre-tool authorization hooks, and they do not register canonical tools with an MCP client.

For example, an explicitly authored test integration might use:

test-cmd: "node ./scripts/project-check.mjs"
auto-test: false

Do not turn auto-test on, replace an existing command, or append an arbitrary shell pipeline just to fit a plugin. Initially document explicit execution of a compiled CLI as an operator command. If canonical hook/MCP declarations target this profile, report unsupported capability until an authoritative host contract and native proof justify a mapping.

Acceptance

  • A content-only artifact installs/relocates without any MCP, Flight, SQLite or Python plugin runtime.
  • Native read-only loading includes the intended guidance without making it an editable target.
  • Existing AGENTS.md and read-list entries are preserved; scalar/list, duplicate and missing-file cases are explicit.
  • Home/repository/cwd and --config precedence are tested using the real native parser/CLI.
  • Nested working directories, Windows/POSIX paths, spaces and relocation do not introduce source-checkout paths.
  • If lint/test integration is selected, actual argv, exit status and output behavior are tested without claiming deterministic tool blocking.
  • Unsupported plugin/hook/MCP capabilities are reported honestly; no implicit third-party bridge is installed.
  • Update/uninstall removes only owned bindings/files and leaves user configuration, histories, secrets, git changes and foreign instructions intact.
  • Composite required/forbidden instruction sharing is tested under Composite conformance: test cross-host auto-discovery and precedence, not only file collisions #651; static process absence follows Small-plugin acceptance: skills and plain hooks without an unnecessary MCP/RSC runtime or empty Workbench #652.
  • Record native loading/configuration proof separately from any optional authenticated model-behavior check; no guarantee that prose is a security policy.
  • English/Chinese install docs link the exact host references and distinguish content support from full native plugin support.

Non-goals

No monkeypatching Aider internals, unofficial MCP bridge deployment, new Python package manager, model/provider configuration, automated commits, or general agent orchestration. Reuse existing content, manifest and receipt machinery instead of inventing aider-plugin.json or aider plugin install.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions