Skip to content

Profiles ​

Profiles inject additional prompt fragments into specific roles at runtime without modifying the preset's topology files. They allow customizing role behavior per-repo or per-user while keeping the base preset generic.

Scopes ​

A profile lives in one of two scopes, specified as <scope>:<name>:

ScopeDirectoryExample spec
repo<workDir>/.autoloop/profiles/<name>/repo:strict-review
user~/.config/autoloops/profiles/<name>/user:my-style

Repo-scoped profiles are checked into the project and shared with the team. User-scoped profiles are personal and apply across any project.

Directory structure ​

Each profile contains subdirectories named after the presets it targets. Inside each preset directory, markdown files are named after the roles they extend:

.autoloop/profiles/strict-review/
  autocode/
    critic.md       # appended to the critic role prompt
    builder.md      # appended to the builder role prompt
  autodoc/
    checker.md      # appended to the checker role prompt

Only .md files are loaded. Files named after roles not present in the topology produce a warning but do not cause errors.

Fragment resolution ​

When a loop starts (or reloads), the harness resolves profile fragments in order:

  1. Collect active profiles: config defaults first, then CLI --profile flags (in order given).
  2. For each profile: locate the profile directory, then look for a subdirectory matching the current preset name.
  3. For each .md file in the preset subdirectory (sorted alphabetically): read the file content and append it to the matching role's prompt.
  4. Multiple profiles: fragments from later profiles are appended after earlier ones, so later profiles take precedence in case of conflicting instructions.

If a profile directory does not exist, the harness throws an error. If a profile exists but has no subdirectory for the current preset, a warning is emitted and the profile is skipped.

Activating profiles ​

CLI flags ​

bash
autoloop run --profile repo:strict-review --profile user:my-style <preset-dir>

The --profile flag is repeatable. Profiles are applied in the order specified.

Config defaults ​

Set default profiles in autoloops.toml so they activate on every run without CLI flags:

toml
[profiles]
default = "repo:strict-review, user:my-style"

The value is a comma-separated list of profile specs. These are prepended to any CLI --profile values.

Suppressing defaults ​

To run without config-defined default profiles:

bash
autoloop run --no-default-profiles <preset-dir>

This suppresses only the config defaults. Explicit --profile flags still apply.

Inspecting profiles ​

bash
autoloop inspect profiles

This shows:

  • Config default profiles (from profiles.default)
  • Active profiles and their resolved fragments (first line of each fragment previewed)
  • Any warnings (missing preset directories, unknown role names)

How fragments are applied ​

Fragments are concatenated to the role's base prompt with a newline separator. The role's original prompt is preserved — fragments only append. When multiple profiles contribute fragments for the same role, they are joined in profile order.

<original role prompt>\n<profile-1 fragment>\n<profile-2 fragment>

Configuration ​

KeyDefaultDescription
profiles.default""Comma-separated list of profile specs to activate by default