Deployment-level tool-call deadlines for dsh: a tool that never declares ToolDefinition.timeoutMs is dispatched with no deadline at all, so one wedged call (a delegation whose child never settles, a third-party MCP tool that never returns) leaves the turn running forever with nothing in the log to say why. Mounted on the public tools/execute waterfall, this plugin arms a configurable budget for exactly those tools, converts an expired one into a structured TOOL_DEADLINE_EXCEEDED result the model can see and retry, and leaves declared budgets, exempt tools and unknown tools untouched. Cooperative by default: it never abandons a call whose tool would not settle, and says so out loud in its optional replace mode instead. Compatible with the dsh 0.1.2, 0.1.3, 0.1.5 and 0.1.6 prerelease lines.