UAT: automation-profile show JSON/YAML output and rich display missing 5 of 8 SafetyProfile sub-model fields #4861

Open
opened 2026-04-08 20:10:12 +00:00 by HAL9000 · 0 comments
Owner

Summary

The CLI's automation-profile show command (and automation-profile list) omits 5 of the 8 SafetyProfile sub-model fields from both the structured JSON/YAML output and the rich terminal display. Only require_sandbox, require_checkpoints, and allow_unsafe_tools are shown; the remaining 5 fields are silently dropped.

What Was Tested

Code-level analysis of src/cleveragents/cli/commands/automation_profile.py against docs/reference/automation_profiles.md and ADR-041.

Expected Behavior (from spec)

The SafetyProfile sub-model has 8 fields per ADR-041 and docs/reference/automation_profiles.md:

Field Type Default
require_sandbox bool true
require_checkpoints bool true
allow_unsafe_tools bool false
require_human_approval bool false
allowed_skill_categories list[str] []
max_cost_per_plan float | null null
max_total_cost float | null null
max_retries_per_step int 3

All 8 fields should appear in the safety sub-object of the JSON/YAML output and in the rich display.

Actual Behavior (from code)

_profile_spec_dict() — JSON/YAML output

# src/cleveragents/cli/commands/automation_profile.py
"execution_controls": {
    "install_dependency": profile.install_dependency,
    "require_sandbox": profile.safety.require_sandbox,
    "require_checkpoints": profile.safety.require_checkpoints,
    "allow_unsafe_tools": profile.safety.allow_unsafe_tools,
    # MISSING: require_human_approval, allowed_skill_categories,
    #          max_cost_per_plan, max_total_cost, max_retries_per_step
},

The 5 missing safety fields are: require_human_approval, allowed_skill_categories, max_cost_per_plan, max_total_cost, max_retries_per_step.

_print_profile() — Rich display

f"  require_sandbox: {profile.safety.require_sandbox}\n"
f"  require_checkpoints: {profile.safety.require_checkpoints}\n"
f"  allow_unsafe_tools: {profile.safety.allow_unsafe_tools}"
# MISSING: require_human_approval, allowed_skill_categories,
#          max_cost_per_plan, max_total_cost, max_retries_per_step

Same 5 fields are absent from the rich terminal panel.

Impact

  • Users cannot inspect the full safety configuration of a profile via CLI
  • Custom profiles that set max_cost_per_plan, max_total_cost, require_human_approval, or allowed_skill_categories will appear to have no such constraints when shown
  • The max_retries_per_step value (default 3) is never visible in CLI output
  • JSON/YAML output is incomplete for programmatic consumers

Code Location

  • src/cleveragents/cli/commands/automation_profile.py
    • _profile_spec_dict() function — execution_controls dict
    • _print_profile() function — rich panel details string

Steps to Reproduce

  1. Run agents automation-profile show manual --format json
  2. Observe the output does not include require_human_approval, allowed_skill_categories, max_cost_per_plan, max_total_cost, or max_retries_per_step in the safety section
  3. Run agents automation-profile show manual
  4. Observe the rich panel does not display these 5 fields

Definition of Done

  • _profile_spec_dict() includes all 8 SafetyProfile fields in the output (either nested under safety: key or in execution_controls)
  • _print_profile() displays all 8 SafetyProfile fields in the rich panel
  • Tests verify the complete safety sub-model appears in JSON, YAML, and rich output

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Summary The CLI's `automation-profile show` command (and `automation-profile list`) omits 5 of the 8 `SafetyProfile` sub-model fields from both the structured JSON/YAML output and the rich terminal display. Only `require_sandbox`, `require_checkpoints`, and `allow_unsafe_tools` are shown; the remaining 5 fields are silently dropped. ## What Was Tested Code-level analysis of `src/cleveragents/cli/commands/automation_profile.py` against `docs/reference/automation_profiles.md` and ADR-041. ## Expected Behavior (from spec) The `SafetyProfile` sub-model has **8 fields** per ADR-041 and `docs/reference/automation_profiles.md`: | Field | Type | Default | |-------|------|---------| | `require_sandbox` | bool | `true` | | `require_checkpoints` | bool | `true` | | `allow_unsafe_tools` | bool | `false` | | `require_human_approval` | bool | `false` | | `allowed_skill_categories` | list[str] | `[]` | | `max_cost_per_plan` | float \| null | `null` | | `max_total_cost` | float \| null | `null` | | `max_retries_per_step` | int | `3` | All 8 fields should appear in the `safety` sub-object of the JSON/YAML output and in the rich display. ## Actual Behavior (from code) ### `_profile_spec_dict()` — JSON/YAML output ```python # src/cleveragents/cli/commands/automation_profile.py "execution_controls": { "install_dependency": profile.install_dependency, "require_sandbox": profile.safety.require_sandbox, "require_checkpoints": profile.safety.require_checkpoints, "allow_unsafe_tools": profile.safety.allow_unsafe_tools, # MISSING: require_human_approval, allowed_skill_categories, # max_cost_per_plan, max_total_cost, max_retries_per_step }, ``` The 5 missing safety fields are: `require_human_approval`, `allowed_skill_categories`, `max_cost_per_plan`, `max_total_cost`, `max_retries_per_step`. ### `_print_profile()` — Rich display ```python f" require_sandbox: {profile.safety.require_sandbox}\n" f" require_checkpoints: {profile.safety.require_checkpoints}\n" f" allow_unsafe_tools: {profile.safety.allow_unsafe_tools}" # MISSING: require_human_approval, allowed_skill_categories, # max_cost_per_plan, max_total_cost, max_retries_per_step ``` Same 5 fields are absent from the rich terminal panel. ## Impact - Users cannot inspect the full safety configuration of a profile via CLI - Custom profiles that set `max_cost_per_plan`, `max_total_cost`, `require_human_approval`, or `allowed_skill_categories` will appear to have no such constraints when shown - The `max_retries_per_step` value (default 3) is never visible in CLI output - JSON/YAML output is incomplete for programmatic consumers ## Code Location - `src/cleveragents/cli/commands/automation_profile.py` - `_profile_spec_dict()` function — `execution_controls` dict - `_print_profile()` function — rich panel details string ## Steps to Reproduce 1. Run `agents automation-profile show manual --format json` 2. Observe the output does not include `require_human_approval`, `allowed_skill_categories`, `max_cost_per_plan`, `max_total_cost`, or `max_retries_per_step` in the safety section 3. Run `agents automation-profile show manual` 4. Observe the rich panel does not display these 5 fields ## Definition of Done - [ ] `_profile_spec_dict()` includes all 8 `SafetyProfile` fields in the output (either nested under `safety:` key or in `execution_controls`) - [ ] `_print_profile()` displays all 8 `SafetyProfile` fields in the rich panel - [ ] Tests verify the complete safety sub-model appears in JSON, YAML, and rich output --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 20:18:55 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#4861
No description provided.