Files
cleveragents-core/docs/reference/automation_profile_service.md
T

3.8 KiB

AutomationProfileService Reference

Overview

The AutomationProfileService resolves the effective automation profile for plan execution using a four-level precedence hierarchy.

Profile Precedence

Profiles are resolved in order (first non-null wins):

Priority Source Description
1 Plan-level Explicitly set via --automation-profile
2 Action-level Default profile set on the action template
3 Project-level Set via project configuration
4 Global-level Config key or CLEVERAGENTS_AUTOMATION_PROFILE env var

If no profile is set at any level, the global default is manual.

Configuration

Config Key

core:
  automation_profile: "supervised"

This sets the global default profile name. The Settings field is default_automation_profile.

Environment Variable Override

export CLEVERAGENTS_AUTOMATION_PROFILE=auto

The environment variable takes precedence over the config file value when the config field is empty.

Legacy Mapping

The automation_level setting is retained for backward compatibility. It is mapped to built-in profiles as follows:

automation_level Value Built-in Profile
manual manual
supervised supervised
auto auto
full_auto full-auto

When default_automation_profile is set, it takes precedence over default_automation_level.

Auto-Progress Behavior

The PlanLifecycleService uses profile thresholds to decide whether to auto-progress plans:

  • Strategize → Execute: auto-progresses when profile.auto_execute < 1.0
  • Execute → Apply: auto-progresses when profile.auto_apply < 1.0

A threshold of 0.0 means fully automatic (no human gate required). A threshold of 1.0 means human approval is always required.

Built-in Profiles

Eight built-in profiles ship with every installation:

Profile auto_execute auto_apply Behavior
manual 1.0 1.0 Human approves all
review 0.0 1.0 Human reviews before apply
supervised 1.0 1.0 Human reviews strategy + execution
cautious 0.7 1.0 Probabilistic gates
trusted 0.0 1.0 Auto most, human apply
auto 0.0 1.0 Fully auto except revert
ci 0.0 0.0 CI pipeline mode
full-auto 0.0 0.0 No gates at all

Persistence

Custom profiles are stored in the automation_profiles table with the namespaced name as the primary key. The repository supports list, show (get_by_name), upsert, and delete operations with a schema_version guard for optimistic concurrency.

API

resolve_profile(plan_profile, action_profile, project_profile)

Resolves the effective profile using the four-level precedence.

get_profile(name)

Looks up a profile by name (built-in first, then repository).

map_legacy_level(level)

Maps a legacy automation_level string to a profile name.

resolve_legacy_level(level)

Resolves a legacy automation_level to a full AutomationProfile.

list_profiles()

Returns all built-in and custom profiles.

create_profile(config)

Creates and persists a custom profile.

update_profile(name, config)

Updates a persisted custom profile.

delete_profile(name)

Deletes a persisted custom profile.