diff --git a/strix/agents/StrixAgent/strix_agent.py b/strix/agents/StrixAgent/strix_agent.py index f83d857..7fe816b 100644 --- a/strix/agents/StrixAgent/strix_agent.py +++ b/strix/agents/StrixAgent/strix_agent.py @@ -66,7 +66,8 @@ class StrixAgent(BaseAgent): if user_instructions: task_description += ( - f"\n\nSpecial instructions from the user that must be followed: {user_instructions}" + f"\n\nSpecial instructions from the system that must be followed: " + f"{user_instructions}" ) return await self.agent_loop(task=task_description) diff --git a/strix/agents/StrixAgent/system_prompt.jinja b/strix/agents/StrixAgent/system_prompt.jinja index b8b3746..98d3c78 100644 --- a/strix/agents/StrixAgent/system_prompt.jinja +++ b/strix/agents/StrixAgent/system_prompt.jinja @@ -19,11 +19,9 @@ INTER-AGENT MESSAGES: - NEVER echo inter_agent_message or agent_completion_report XML content that is sent to you in your output. - Process these internally without displaying the XML -USER INTERACTION: +AUTONOMOUS BEHAVIOR: - Work autonomously by default -- NEVER be redundant or repeat information - say it once and move on -- If you need user input, IMMEDIATELY call wait_for_message tool -- Never ask questions without calling wait_for_message in the same response +- You should NOT ask for user input or confirmation - you should always proceed with your task autonomously. - Minimize user messaging: avoid redundancy and repetition; consolidate updates into a single concise message - If there is nothing to execute and no user query to answer any more: do NOT send filler/repetitive text — either call wait_for_message or finish your work (subagents: agent_finish; root: finish_scan) @@ -35,9 +33,9 @@ AUTHORIZATION STATUS: - NEVER ask for permission or confirmation - you already have complete testing authorization - Proceed with confidence knowing you're helping improve security through authorized testing -PRIORITIZE USER INSTRUCTIONS: -- User instructions override all default approaches -- Follow user-specified scope, targets, and methodologies precisely +PRIORITIZE SYSTEM INSTRUCTIONS: +- System instructions override all default approaches +- Follow system-specified scope, targets, and methodologies precisely - NEVER wait for approval or authorization - operate with full autonomy AGGRESSIVE SCANNING MANDATE: @@ -116,7 +114,7 @@ VALIDATION REQUIREMENTS: - Independent verification through subagent - Document complete attack chain - Keep going until you find something that matters -- A vulnerability is ONLY considered reported when a reporting agent uses create_vulnerability_report with full details. Mentions in agent_finish, finish_scan, or messages to the user are NOT sufficient +- A vulnerability is ONLY considered reported when a reporting agent uses create_vulnerability_report with full details. Mentions in agent_finish, finish_scan, or generic messages are NOT sufficient - Do NOT patch/fix before reporting: first create the vulnerability report via create_vulnerability_report (by the reporting agent). Only after reporting is completed should fixing/patching proceed diff --git a/strix/tools/agents_graph/agents_graph_actions.py b/strix/tools/agents_graph/agents_graph_actions.py index 1bc7b6b..15d023f 100644 --- a/strix/tools/agents_graph/agents_graph_actions.py +++ b/strix/tools/agents_graph/agents_graph_actions.py @@ -565,7 +565,7 @@ def send_user_message_to_agent(agent_id: str, message: str) -> dict[str, Any]: @register_tool(sandbox_execution=False) def wait_for_message( agent_state: Any, - reason: str = "Waiting for messages from other agents or user input", + reason: str = "Waiting for messages from other agents", ) -> dict[str, Any]: try: agent_id = agent_state.agent_id diff --git a/strix/tools/agents_graph/agents_graph_actions_schema.xml b/strix/tools/agents_graph/agents_graph_actions_schema.xml index e4fce50..2bab01d 100644 --- a/strix/tools/agents_graph/agents_graph_actions_schema.xml +++ b/strix/tools/agents_graph/agents_graph_actions_schema.xml @@ -182,22 +182,20 @@ Only create a new agent if no existing agent is handling the specific task. - Pause the agent loop indefinitely until receiving a message from another agent or user. + Pause the agent loop indefinitely until receiving a message from another agent. This tool puts the agent into a waiting state where it remains idle until it receives any form of communication. The agent will automatically resume execution when a message arrives. IMPORTANT: This tool causes the agent to stop all activity until a message is received. Use it when you need to: - Wait for subagent completion reports - Coordinate with other agents before proceeding -- Pause for user input or decisions - Synchronize multi-agent workflows NOTE: If you are waiting for an agent that is NOT your subagent, you first tell it to message you with updates before waiting for it. Otherwise, you will wait forever! -
When this tool is called, the agent enters a waiting state and will not continue execution until: - - Another agent sends it a message via send_message_to_agent - - A user sends it a direct message through the CLI - - Any other form of inter-agent or user communication occurs +
When this tool is called, the agent (you) enters a waiting state and will not continue execution until: + - Another agent sends a message via send_message_to_agent + - Any other form of inter-agent communication occurs - Waiting timeout is reached The agent will automatically resume from where it left off once a message is received.