UAT: No predefined safety profiles (conservative/balanced/aggressive) — only DEFAULT_SAFETY_PROFILE constant exists #5611

Open
opened 2026-04-09 07:48:44 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: cost-session-budgets-safety-profiles
Severity: Low — usability gap; users must manually construct all safety profiles


What Was Tested

Code-level analysis of safety_profile.py and the specification for predefined safety profile constants.

Expected Behavior

The v3.6.0 milestone includes "safety profiles" as a feature. Common safety configurations (conservative, balanced, aggressive) would be expected as predefined constants, similar to how automation profiles have eight built-in profiles (manual through full-auto).

Actual Behavior (from code analysis)

src/cleveragents/domain/models/core/safety_profile.py only defines one predefined constant:

DEFAULT_SAFETY_PROFILE: SafetyProfile = SafetyProfile(
    allowed_skill_categories=[],
    require_sandbox=True,
    require_checkpoints=True,
    require_human_approval=False,
    allow_unsafe_tools=False,
    max_cost_per_plan=None,
    max_retries_per_step=3,
    max_total_cost=None,
)

There are no predefined profiles for common use cases such as:

  • Conservative: require_sandbox=True, require_checkpoints=True, require_human_approval=True, allow_unsafe_tools=False
  • Balanced: require_sandbox=True, require_checkpoints=True, require_human_approval=False, allow_unsafe_tools=False
  • Aggressive: require_sandbox=False, require_checkpoints=False, require_human_approval=False, allow_unsafe_tools=True

Note: The specification does NOT explicitly define these named profiles — the spec only defines DEFAULT_SAFETY_PROFILE. This is a usability gap rather than a spec violation.

Code Location

  • src/cleveragents/domain/models/core/safety_profile.py — only DEFAULT_SAFETY_PROFILE constant defined
  • docs/reference/safety_profiles.md — no mention of predefined named profiles
  • docs/specification.md — no mention of conservative/balanced/aggressive profiles

Impact

Users who want to apply a "conservative" or "aggressive" safety posture must manually construct SafetyProfile objects with all fields. This is error-prone and reduces discoverability. Predefined constants would improve the developer experience.

Suggested Fix

Add predefined safety profile constants:

CONSERVATIVE_SAFETY_PROFILE: SafetyProfile = SafetyProfile(
    require_sandbox=True,
    require_checkpoints=True,
    require_human_approval=True,
    allow_unsafe_tools=False,
    max_retries_per_step=1,
)

BALANCED_SAFETY_PROFILE: SafetyProfile = SafetyProfile(
    require_sandbox=True,
    require_checkpoints=True,
    require_human_approval=False,
    allow_unsafe_tools=False,
    max_retries_per_step=3,
)

PERMISSIVE_SAFETY_PROFILE: SafetyProfile = SafetyProfile(
    require_sandbox=False,
    require_checkpoints=False,
    require_human_approval=False,
    allow_unsafe_tools=True,
    max_retries_per_step=5,
)

This would also need corresponding documentation in docs/reference/safety_profiles.md.


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

## Bug Report **Feature Area**: cost-session-budgets-safety-profiles **Severity**: Low — usability gap; users must manually construct all safety profiles --- ## What Was Tested Code-level analysis of `safety_profile.py` and the specification for predefined safety profile constants. ## Expected Behavior The v3.6.0 milestone includes "safety profiles" as a feature. Common safety configurations (conservative, balanced, aggressive) would be expected as predefined constants, similar to how automation profiles have eight built-in profiles (`manual` through `full-auto`). ## Actual Behavior (from code analysis) `src/cleveragents/domain/models/core/safety_profile.py` only defines **one** predefined constant: ```python DEFAULT_SAFETY_PROFILE: SafetyProfile = SafetyProfile( allowed_skill_categories=[], require_sandbox=True, require_checkpoints=True, require_human_approval=False, allow_unsafe_tools=False, max_cost_per_plan=None, max_retries_per_step=3, max_total_cost=None, ) ``` There are no predefined profiles for common use cases such as: - **Conservative**: `require_sandbox=True`, `require_checkpoints=True`, `require_human_approval=True`, `allow_unsafe_tools=False` - **Balanced**: `require_sandbox=True`, `require_checkpoints=True`, `require_human_approval=False`, `allow_unsafe_tools=False` - **Aggressive**: `require_sandbox=False`, `require_checkpoints=False`, `require_human_approval=False`, `allow_unsafe_tools=True` Note: The specification does NOT explicitly define these named profiles — the spec only defines `DEFAULT_SAFETY_PROFILE`. This is a usability gap rather than a spec violation. ## Code Location - `src/cleveragents/domain/models/core/safety_profile.py` — only `DEFAULT_SAFETY_PROFILE` constant defined - `docs/reference/safety_profiles.md` — no mention of predefined named profiles - `docs/specification.md` — no mention of conservative/balanced/aggressive profiles ## Impact Users who want to apply a "conservative" or "aggressive" safety posture must manually construct `SafetyProfile` objects with all fields. This is error-prone and reduces discoverability. Predefined constants would improve the developer experience. ## Suggested Fix Add predefined safety profile constants: ```python CONSERVATIVE_SAFETY_PROFILE: SafetyProfile = SafetyProfile( require_sandbox=True, require_checkpoints=True, require_human_approval=True, allow_unsafe_tools=False, max_retries_per_step=1, ) BALANCED_SAFETY_PROFILE: SafetyProfile = SafetyProfile( require_sandbox=True, require_checkpoints=True, require_human_approval=False, allow_unsafe_tools=False, max_retries_per_step=3, ) PERMISSIVE_SAFETY_PROFILE: SafetyProfile = SafetyProfile( require_sandbox=False, require_checkpoints=False, require_human_approval=False, allow_unsafe_tools=True, max_retries_per_step=5, ) ``` This would also need corresponding documentation in `docs/reference/safety_profiles.md`. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-09 07:56:34 +00:00
Author
Owner

Label compliance fix applied:

  • Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md

Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

Label compliance fix applied: - Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
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.

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