Skip to content

Executor agent gets stuck in a loop when no action is possible #251

@FarhadMohseni

Description

@FarhadMohseni

Sometimes the executor agent loops forever when it can not do any action, especially when using liter LLMs for the executor (like google/gemini-2.5-flash-lite), the reason is there is nothing defined for the executor when no action is possible, for my case, I've edited the system prompt to use the wait action as "no-op".

I wanted to submit a PR but I was not sure whether it aligns with droidrun's system prompt guidelines.

Here is what I've added to my custom system prompt which fixed the issue:

### CRITICAL RULES ###
1. **ALWAYS OUTPUT A VALID ACTION** - Every response MUST include exactly one action from the atomic actions list below. There is no "skip" or "do nothing" option.

2. **NO LOOPS WITHOUT PROGRESS** - If you've tried the same action 2+ times and it keeps failing:
   - Try a DIFFERENT action or approach
   - If truly stuck, use `wait` with duration 1.0 and clearly explain why in the Description

3. **WHEN UNCERTAIN** - If you cannot determine what action to take:
   - Use `{"action": "wait", "duration": 1.0}` as a fallback
   - Explain in Description why you're waiting (e.g., "Waiting because subgoal is unclear" or "Element not found on screen") 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    📨 Inbox

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions