Participants
iCTF — Competing with Agentish
How to use Agentish to build autonomous agent workflows for the International Capture The Flag competition.
Essential Reading
Agentish Framework Guide
Learn how to use the visual editor — node types, state management, loops, tools, and troubleshooting.
Read the practical guide →Agentic Workflow Guide
Understand the theory — why multi-agent workflows work, topology patterns, control flow, and information flow design.
Read the conceptual guide →What is the iCTF?
The International Capture The Flag (“iCTF”) is a distributed, wide-area security exercise organized by Shellphish at UC Santa Barbara and sponsored by the ACTION NSF AI Institute. It is one of the world’s longest-running educational hacking competitions.
In the Agentish edition, teams build autonomous AI agents that interact with challenge environments through MCP tools. Instead of solving challenges manually, you design agent workflows that analyze, reason, and act on your behalf.
For more information, visit ictf.cs.ucsb.edu.
Agentish Challenges
When you connect to the iCTF competition website, you will see two types of challenges: traditional challenges and Agentish challenges.
Traditional challenges are the same as in previous years, and are designed to be solved by hand. These challenges usually have an AI-themed twist, but are still solved by manually interacting with a remote service.
Agentish challenges are designed to be solved by an autonomous agent.
When you select an Agentish challenge, you will be presented with two links: a link to the agentish editor
and a link to the agentish sandbox.
You will use the agentish editor to build your agent workflow.
You will then download an "agent bundle" and submit it to the challenge sandbox.
The sandbox will compile your agent workflow and run it against the challenge.
The sandbox will return the log of the agent's execution and the results of the challenge to you.
If you have solved the challenge the flag will be in the results or somewhere in the logs.
Look for something that looks like "ictf{This_could_be_the_flag}".
The documentation of the agentish framework is available here.
Using the Visual Editor
1. Understanding the Canvas
The editor presents a node-based graph canvas. You build your agent by placing nodes and connecting them with edges to define the execution flow.
2. Adding Nodes
Right-click on the canvas to add nodes. Available node types:
- Entry Point — The starting node. Every workflow needs one.
- LLM Node — An AI agent that processes input, reasons, and optionally calls tools.
- Router Node — Makes decisions about which path to take based on context.
- Worker Node — Performs a subtask and returns results to the calling LLM.
3. Connecting Nodes
Drag from an output slot to an input slot to create an edge. Edges define the execution flow of your agent.
4. Configuring Nodes
Click on a node to open the property inspector. Key settings:
- System Prompt — Instructions for the LLM (its role, constraints, behavior)
- Human Prompt — Template with
{variable}placeholders from state - Selected Tools — Which MCP tools this node can use
- Max Tool Iterations — Limit on how many times the LLM can call tools in a loop
5. Using Tools
The Function Catalog sidebar shows all available MCP tools from the challenge. Assign tools to LLM or Worker nodes in the inspector. The LLM will decide when and how to call them during execution.
Exporting & Submitting
- Click "Download Bundle" in the editor toolbar
- You get a ZIP file containing:
- →
asl.json— Your workflow definition - →
layout.json— Visual layout (for re-importing)
- →
- Upload the bundle to the agentish-ctf sandbox
- The sandbox compiles your ASL into executable Python and runs it against the challenge
Tips for Success
- Start simple — Get a basic pipeline working before adding complexity
- Write detailed prompts — The better your system prompt, the better the agent performs
- Use routers wisely — When the challenge requires different strategies, let the AI choose
- Set tool limits — Prevent runaway tool loops with reasonable
max_tool_iterations - Test incrementally — Export and test often, don’t build the entire workflow before testing
- Read tool descriptions — Understanding what each MCP tool does is key to designing effective workflows
- Use workers for subtasks — Break complex reasoning into focused worker nodes