Steering the Reins
Date: August 2026
Most system prompts read like warning labels. Paragraphs of things the model shouldn't do.
"NEVER call the database directly."
"Do NOT generate code comments that narrate what the code does."
The Sleep Tool
Here's the concrete case. We have an AI coding agent with access to tools: sleep, subagent launcher, file operations, search. We want the agent to multitask — launch subagents for parallel work instead of sleeping and polling.
"Do not use the sleep tool. If a task can be done in parallel, do not sleep."
"Multitasking is typically achieved by launching a subagent for parallel work, then continuing on the current task in the same turn."
Same goal. Same tools available. The offensive version wins — and not because "positive phrasing is nicer." The mechanism is specific.
The Reasoning Cycle Is the Mechanism
This is the part nobody is naming clearly.
Offensive: the model encounters "multitasking is achieved by launching subagents." That instruction is actively being reasoned about in the same cycle where the model is about to select its next action. The subagent tool is right there in the tool list. The model's own reasoning now has a natural, low-friction path: I should multitask → the instruction says subagents → the subagent tool is available → call it.
The defensive version hopes the model figures out the right alternative after you've banned the wrong one. The offensive version puts the right alternative directly into the reasoning that's making the decision. One is a fence. The other is a rein.
This Is Not "Be Positive"
The generic advice exists: "tell the model what to do, not what not to do." Fine as far as it goes. But offensive prompting is a more specific claim about why it works.
Saying "be helpful" is positive phrasing. It's not offensive prompting.
Saying "when facing parallel tasks, launch a subagent using the Task tool to handle independent work streams" — that's offensive prompting. It connects the intent (parallel work) to the specific affordance (Task tool) in a way that the model's reasoning can execute on immediately. The instruction, the intent, and the tool are all active in the same inference step.
The difference is whether your instruction sets a vibe or builds a reasoning pathway to a specific tool call.
Patterns From Production
We've been converting defensive instructions to offensive ones across our system prompts. Here's what the before and after looks like:
# Defensive (replaced) "Do NOT use shell commands for file operations (reading, writing, editing). Use the specialized tools instead." # Offensive (shipped) "Use specialized tools instead of terminal commands when possible, as this provides a better user experience. For file operations, use dedicated tools."
# Defensive (replaced) "Do not sleep and wait for background tasks." # Offensive (shipped) "Multitask on independent work while backgrounded jobs run, or finish your turn and rely on the end-of-turn completion notification."
# Defensive (replaced) "NEVER commit changes without being asked." # Offensive (shipped) "Only create commits when requested by the user. If unclear, ask first."
When Defensive Prompting Is Right
Defensive prompting has a narrow, legitimate use case: hard safety boundaries where the consequence of violation is severe and the rule is binary.
"Never execute destructive database commands without explicit user confirmation." That's a fine defensive instruction. The downside is catastrophic, the rule is unambiguous, and there's no "better alternative" to steer toward. The model must not do the thing. Period.
But for behavioral steering — which tool to prefer, which workflow to follow, how to decompose work — offensive prompting is the better tool. It's more reliable in practice because it works with inference instead of against it.
The Broader Observation
Offensive prompting takes that observation and applies it to the system prompt itself. If the instruction describes the desired behavior in terms of the available tools, and the model encounters that instruction while reasoning about what tool to call next, you've put the answer in the question.
The assistants want to do a good job. They really do. Give them a clear path and they'll take it. Give them a list of fences and they'll spend tokens figuring out where the path is supposed to be.
Your system prompt shouldn't read like a warning label. It should read like a playbook.
Related Reading
- The Proof of Work Pattern — Leveraging trained behavior at the exact moment of decision
- The Scratchpad Decorator Pattern — Infrastructure-level memory without a dedicated memory tool
- Agentic Workflows: A Purist Approach — Agent-as-workflow and compiled skills through one MCP surface
