{"slug": "i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how", "title": "I Added Sub-Agents to ragleap-agents Without Breaking Anything — Here's How", "summary": "The ragleap-agents project released version 0.5.0, adding a make_delegate_tool that lets a parent agent delegate tasks to child agents while propagating taint in both directions and enforcing hard limits such as MAX_DEPTH_CEILING and per-run budgets. The release is opt-in only, with Agent.run gaining a keyword-only tainted=False parameter that preserves existing behavior, and the project reports 208 tests, 8 live runs and zero breaking changes. Child answers are fenced so a delegated agent's output cannot become the parent's instructions, blocking prompt injection and privilege escalation from child to parent approval queue.", "body_md": "ragleap-agents 0.5.0: Sub-agents — 208 tests, 8 live runs, 0 breaking changes\n\nTag: ragleap-agents-v0.5.0 (332b4c0) — 2 commits to main since.\n\nTL;DR: make_delegate_tool lets a parent delegate to children, with taint flowing both ways and hard limits. Opt-in only.\n\nThe design goal\n\nNo breaking changes. Every addition is opt-in.\n\nagent.run(\"do X\")\n\nagent.run(\"do X\", tainted=True) # #828\n\nAgent.run gained only *, tainted=False — keyword-only, defaults to old behavior.\n\nfrom ragleap_agents import make_delegate_tool, delegate_policy, Budget, MAX_DEPTH_CEILING\n\ndelegate = make_delegate_tool(\n\n    children={\n\n        \"researcher\": researcher_agent,\n\n        \"analyst\": analyst_agent\n\n    },\n\n    # limits per root run\n\n)\n\nparent = Agent(tools=[delegate, send_message, ...])\n\nresult = parent.run(\"Research competitor pricing and draft a note\")\n\nImplementation in #827, #843, #849:\n\nWhy fenced? To prevent prompt injection via child answer becoming parent's instructions.\n\nThis is intentional for safety. No privilege escalation from child to parent approval queue.\n\nFuture: explicit child approval queue with owner confirmation on host (Phase 2 permission system).\n\nfrom ragleap_agents.context import current_run\n\ndef my_tool(x: str):\n\n    ctx = current_run()\n\n    print(ctx.run_id, ctx.taint)\n\n    return x\n\nUseful for custom logging / policy.\n\nVerified (with numbers)\n\nWheel: exposes make_delegate_tool, delegate_policy, Budget, MAX_DEPTH_CEILING, Agent.run(..., tainted=False)\n\nLive: scripts/live_delegate.py #890\n\nNot verified — honest\n\nWe ship honest limits, not marketing.\n\nInstall & Provenance\n\npip install ragleap-agents==0.5.0\n\nDigests:\n\nRelease PR #892, workflow 39653944931, 2026-10-21 18:35 UTC. Trusted publishing with Sigstore.\n\nWhat's next\n\nThis unlocks Phase 3 of RagLeap roadmap:\n\nCode: github.com/ragleap/ragleap-core\n\nIf you build multi-agent, try the delegation API and tell me where it breaks.", "url": "https://wpnews.pro/news/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how", "canonical_source": "https://dev.to/ragleap/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-heres-how-5579", "published_at": "2026-10-22 06:30:54+00:00", "updated_at": "2026-10-22 06:40:47.196192+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-safety"], "entities": ["ragleap-agents", "RagLeap", "make_delegate_tool", "Agent.run", "Sigstore", "github.com/ragleap/ragleap-core"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how", "markdown": "https://wpnews.pro/news/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how.md", "text": "https://wpnews.pro/news/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how.txt", "jsonld": "https://wpnews.pro/news/i-added-sub-agents-to-ragleap-agents-without-breaking-anything-here-s-how.jsonld"}}