Capability Versus Control: Code, Files, and Sandboxes
OpenManus becomes a different kind of system when its model can execute Python, edit files, run shell commands, or ask a person to intervene. This chapter diagnoses that change by separating the controls visible in the built-in tools from the stronger guarantees readers may be tempted to assume. The practical judgment is which execution boundary is active, what it contains, and what authorization, verification, and maintenance work still belongs to the deployment.
Powerful tools expose the gap between a call and a consequence
The default Manus tool set turns a language-model decision into more than text. Python execution can run supplied code in a separate process, capture printed output, and stop after a timeout. The string-replacement editor can view files, create files, replace text, insert content, and undo edits. A human-interaction tool can ask for assistance, and a termination tool can end the agent's loop. Software-oriented agents and the MCP server also have access to a persistent local Bash session.
These capabilities are useful precisely because they cross the conversation boundary. A model can inspect data and calculate a result instead of merely describing how to calculate it. It can make a file change rather than suggest a patch. It can keep a shell session alive across commands or ask a human when an automated path is insufficient. The resulting agent is more practical, but the same capabilities make the difference between “the model proposed an action” and “the environment changed” impossible to ignore.
The first control is interface validation. The tool-calling layer checks that a requested name exists and that its arguments can be parsed. The editor validates that paths are absolute for its local interface, refuses to use create to overwrite an existing file, and requires an exact string for replacement. A replacement that appears zero times or more than once is rejected rather than applied ambiguously. These checks reduce accidental mismatch between what the model meant and what the tool can safely interpret.
The second control is time and process management. Python execution runs in a separate process and can terminate it after its timeout. The local Bash implementation maintains a process-group-backed session and has a bounded command wait. The agent itself has step limits and an explicit termination tool. Together, these controls limit some forms of indefinite work. They do not tell the runtime whether a fast operation was appropriate, whether a command changed the right resource, or whether the final file contains the right result.
The third control is observation. Tools return structured output or errors that the model can use on the next step. A failed replacement can cause the model to inspect the file again. A Python exception can lead to a revised calculation. A shell result can guide a later command. But the observation is still the tool's report. The collection does not independently compare it with an acceptance condition, and the model may decide to continue from an incomplete or misleading result.