UAT: agents actor run --skill silently ignores skill attachment for non-tool-bearing actors — no warning or error emitted #6154

Open
opened 2026-04-09 15:47:08 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: Skill Attachment / Actor Run
Milestone Scope: v3.3.0 (skill system)
Severity: Non-critical (silent failure, confusing UX)


What Was Tested

The agents actor run --skill <name> command and its behavior when the actor does not support tools.

Expected Behavior (from spec)

The --skill option help text states: "Skill to attach; only augments tool-bearing agents (repeatable)". This implies that when --skill is used with a non-tool-bearing actor, the user should receive a warning or error indicating that the skill cannot be attached.

Actual Behavior

In src/cleveragents/cli/commands/actor.py, the run command accepts --skill and passes skill_names to ReactiveCleverAgentsApp:

app_exec = ReactiveCleverAgentsApp(
    config_files=resolved_config,
    verbose=verbose,
    unsafe=unsafe,
    temperature_override=temperature,
    skill_names=skill,  # ← passed directly, no validation
)

There is no validation that the actor is tool-bearing before passing skill_names. If the actor does not support tools, the skills are silently ignored without any warning to the user.

Steps to Reproduce

# Register a non-tool-bearing actor (e.g., a simple text-only actor)
agents actor add local/text-only --config text-only-actor.yaml

# Try to attach a skill to it
agents actor run local/text-only "Hello" --skill local/my-skill
# Expected: Warning "Actor 'local/text-only' does not support tools; --skill will be ignored"
# Actual: Runs silently without the skill being applied, no warning

Code Location

src/cleveragents/cli/commands/actor.pyrun() function, the skill_names=skill parameter passed to ReactiveCleverAgentsApp.

Impact

Users who specify --skill for a non-tool-bearing actor will not know that their skill was silently dropped. This can lead to confusion when the actor's behavior doesn't change as expected.

Fix

Before passing skill_names to ReactiveCleverAgentsApp, check if the actor configuration supports tools (e.g., has capabilities with tools: true or has a tools list in its config blob). If not, emit a warning:

if skill and resolved_config:
    # Check if actor supports tools
    actor_config = load_actor_config(resolved_config)
    if not actor_config_supports_tools(actor_config):
        typer.echo(
            f"Warning: Actor does not support tools; --skill will be ignored.",
            err=True
        )

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

## Bug Report **Feature Area**: Skill Attachment / Actor Run **Milestone Scope**: v3.3.0 (skill system) **Severity**: Non-critical (silent failure, confusing UX) --- ## What Was Tested The `agents actor run --skill <name>` command and its behavior when the actor does not support tools. ## Expected Behavior (from spec) The `--skill` option help text states: "Skill to attach; only augments tool-bearing agents (repeatable)". This implies that when `--skill` is used with a non-tool-bearing actor, the user should receive a warning or error indicating that the skill cannot be attached. ## Actual Behavior In `src/cleveragents/cli/commands/actor.py`, the `run` command accepts `--skill` and passes `skill_names` to `ReactiveCleverAgentsApp`: ```python app_exec = ReactiveCleverAgentsApp( config_files=resolved_config, verbose=verbose, unsafe=unsafe, temperature_override=temperature, skill_names=skill, # ← passed directly, no validation ) ``` There is **no validation** that the actor is tool-bearing before passing `skill_names`. If the actor does not support tools, the skills are silently ignored without any warning to the user. ## Steps to Reproduce ```bash # Register a non-tool-bearing actor (e.g., a simple text-only actor) agents actor add local/text-only --config text-only-actor.yaml # Try to attach a skill to it agents actor run local/text-only "Hello" --skill local/my-skill # Expected: Warning "Actor 'local/text-only' does not support tools; --skill will be ignored" # Actual: Runs silently without the skill being applied, no warning ``` ## Code Location `src/cleveragents/cli/commands/actor.py` — `run()` function, the `skill_names=skill` parameter passed to `ReactiveCleverAgentsApp`. ## Impact Users who specify `--skill` for a non-tool-bearing actor will not know that their skill was silently dropped. This can lead to confusion when the actor's behavior doesn't change as expected. ## Fix Before passing `skill_names` to `ReactiveCleverAgentsApp`, check if the actor configuration supports tools (e.g., has `capabilities` with `tools: true` or has a `tools` list in its config blob). If not, emit a warning: ```python if skill and resolved_config: # Check if actor supports tools actor_config = load_actor_config(resolved_config) if not actor_config_supports_tools(actor_config): typer.echo( f"Warning: Actor does not support tools; --skill will be ignored.", err=True ) ``` --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.2.0 milestone 2026-04-09 21:17:44 +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#6154
No description provided.