## MervinPraison/PraisonAI — v4.7.10…v4.7.11

_212+ commits._

### Fixes
- **Merge pull request #5359 from MervinPraison/fix/main-ci-error-classifier-llm-helpers** (c61dc9a)
- **Merge origin/main into fix/main-ci-error-classifier-llm-helpers** (4531bee)
- **fix(llm): restore task-local agent_id for token tracking** (30be9a8)
- **Merge pull request #5364 from MervinPraison/fix/pipeline-sync-fork-pr-labels** (228a2e8)
- **Fix pipeline label sync for fork PR heads.** (4b4265b)
- **Merge origin/main into fix/main-ci-error-classifier-llm-helpers** (8c021ad)
- **fix(llm): tolerate missing max_tool_repairs in _tool_repair_message** (88f058e)
- **fix(llm): task-local agent attribution, deepcopy-safe LLM, wired string-arg guard** (5a32d3b)
- **fix(llm): restore task-local agent attribution and JSON tool recovery** (9a247a1)
- **fix(llm): tolerate partial LLM stubs in tool-repair helpers** (c5a02d2)
- **fix(llm): restore error classifier keywords and shared tool-reliability helpers** (836b799)
- **fix: pin webhook delivery to validated IP and surface unfollowed redirects** (09e6aac)
- **fix: close webhook TOCTOU/SSRF, honour explicit --max-tokens, isolate sync workflow bridge (fixes #5358)** (4e0fff6)
- **fix: restore task-local LLM attribution + harden approval-timeout routing & orphan-pool accounting** (4985015)
- **fix: approval timeout race, non-atomic state writes, hung-tool pool starvation (fixes #5356)** (1790d04)
- **fix: secure server_reply channel + task-local LLM token attribution** (6cb57df)
- **fix: reconnect-safe server→client interactive request primitive (fixes #5351)** (da9d1fd)
- **fix: isolate gateway token streams + task-local LLM agent attribution** (ff8362c)
- **fix: wire agent token deltas to gateway SSE hot path for incremental streaming (fixes #5349)** (5cc2240)
- **fix: resolve DualLock handoff deadlock, count doom-loop once, wire YAML callbacks** (ad3b58f)
- **fix: wire dropped YAML agent fields, reachable doom-loop check, real DualLock mutual exclusion (fixes #5337)** (5eb8d60)
- **fix: address Greptile review on background /v1/responses (ownership, bounded store, rejection status, stable msg id, empty-output shape)** (b2d45f3)
- **fix: add background/async runs to OpenAI-compat /v1/responses (fixes #5335)** (7e497cf)
- **fix: normalize egress host + keep destination authoritative (PR #5334)** (dd0a3d4)
- **fix: add network-egress dimension to core PolicyEngine (fixes #5333)** (b392b9a)
- **fix: make LLM agent-name attribution task-local via ContextVar** (ef0101b)
- **fix: preserve TTL/perms and honor write results in GCS+memory state stores** (515946a)
- **fix: repair GCS state store, atomic memory writes, drift-aware tool allowlist (fixes #5331)** (13ab038)
- **fix: task-local LLM attribution + harden concurrency/circuit/failover** (81d4a0c)
- **fix: repair three silently-broken core-SDK reliability guarantees (fixes #5329)** (b8ee3a3)
- **fix: harden plugin typed-subsystem merge (policy/skill/guardrail)** (ec51486)
- **fix: wire plugin GUARDRAIL/POLICY/SKILL types into typed subsystems (fixes #5327)** (f2cc8b2)
- **fix: task-local LLM agent attribution + gateway projection echo dedup** (d3a47ee)
- **fix: add session-projection reducer for gateway clients (fixes #5324)** (136ebae)
- **fix: make LLM.current_agent_name a task-local ContextVar (#5052)** (710db58)
- **fix: harden checkpoint size-skip + self-contained shadow store (PR #5310 review)** (5eb2389)
- **fix: seed checkpoint shadow-git from project repo + tune for large repos (fixes #5308)** (c8ae5ca)
- **fix: implement async tool-reliability parity + stream context mgmt (#5304)** (5877ab8)
- **fix: async token-usage tuple parity on cancel + Responses API usage keys** (110fe69)
- **fix: wire workspace_root, support async guardrails, add return_token_usage to async LLM (fixes #5304)** (24bf9c9)
- **fix: preserve FULL durability + resolve file: URI in WAL guard (#5264)** (a6d1396)
- **fix: harden core SQLite stores with WAL-safe-fallback connector (fixes #5264)** (eed2104)
- **fix: honor hook priority across parallel/sequential boundary + unify add_hook default** (36ab24f)
- **fix: honor hook priority for deterministic execution order (fixes #5261)** (7ff330d)
- **fix: make LLM.current_agent_name task-local + add LLM.__deepcopy__** (ee49a1c)
- **fix: close 4 reviewer-flagged gaps in workflow generators + timeout wrapper** (4c64d73)
- **fix: harden workflow generators + tool-timeout pool lifecycle (fixes #5259)** (fed972b)
- **fix: task-local LLM agent attribution, auto-save index lock, throttle release-by-handle** (9eab8ce)
- **fix: async-safe auto-save, publish_async history parity, concurrency release-by-handle (fixes #5257)** (b4a0c9c)
- **fix: complete error-kind taxonomy, auth-without-failover surface, PyYAML/croniter core-dep escalation** (acc8709)
- **fix: atomic non-Lua idempotency fallback + degraded-state recovery (#5154)** (b7b4e31)
- **fix: code-mode positional tool calls break when a policy hook allows without rewrite** (48fde47)
- **fix: complete error-kind classifier terms + surface auth without failover** (fa5ea65)
- **fix: keep shared webhook registry synced across reload and teardown (#5146)** (71befe9)
- **fix: task-local token attribution, retain id-less OpenAI usage, scope lazy-import escalation to core deps** (ac319e3)
- **fix: drop user-module sys.modules entry after successful exec + add isolation tests** (592be82)
- **fix: LLM.__deepcopy__ rebuilds threading locks for lock-bearing subclasses** (455a32f)
- **fix: end async turn tracking in finally so terminal turns don't leak live ownership** (4d26689)
- **fix: close bot-loop guard gaps (gateway telegram, CLI, slack self, invalid policy) (#5062)** (3e5d6f6)
- **fix: owner-checked record + runtime fail-open for RedisIdempotencyStore (#5154)** (b86bf7f)
- **fix: self-heal per-loop httpx cache, anchor availability cooldown, deflake client-id test** (d7e96b2)
- **fix: close relay-reply redaction bypass and unify outbound policy (#5055)** (044dba0)
- **fix: align code-mode policy gate with direct path (guardrail rewrites, approval re-check, bypass)** (6b1b972)
- **fix: thread per-run strictness into YAML normalization (fixes greptile P1)** (3680ad5)
- **fix: declare supports_delete on adapters with real delete_message (#5054)** (02f38c6)
- **fix: make agent-attribution ContextVar per-instance + add LLM.__deepcopy__** (7044390)
- **fix: serialize room drain, guard custom-planner rounds, validate roster** (e7b2d9f)
- **fix: preserve caller-supplied Turso auth_token in conversation_options** (4697a73)
- **fix: namespace user-module sys.modules key to prevent cross-tenant clobber (fixes #5157)** (11227b6)
- **fix: default-path rollback, async guardrail offload, per-agent hook isolation (fixes #5149)** (2951c7f)
- **fix: shared HTTP ingress for webhook channels (fixes #5146)** (67c7642)
- **fix: cross-tenant token collisions, dropped success-callbacks, masked import failures (fixes #5069)** (3b4cfb9)
- **fix: wire BotLoopGuard into inbound path + config surface (fixes #5062)** (34cf106)
- **fix: implement cluster-wide Redis inbound idempotency store (fixes #5154)** (7ad6ea6)
- **fix: multi-tenant chat_history bleed, per-loop httpx pool leak, transient availability pin (fixes #5150)** (7b096b3)
- **fix: gate code-mode tools, lock BackgroundRunner tasks, unblock Gemini async (fixes #5064)** (7baf5e3)
- **fix: scrub secrets from outbound gateway reply path (fixes #5055)** (a2c4377)
- **fix: make strict-validation and tool-timeout-worker toggles per-run DI-scoped (fixes #5065)** (d6619cb)
- **fix: streaming tool-result serialization and concurrent token misattribution (fixes #5052)** (1baa85a)
- **fix: unify agent-callable message-action surface with per-action authority (fixes #5054)** (ecf613f)
- **fix: managed-agent resource races, silent scheduler failures, PraisonAIDB kwarg cross-contamination (fixes #5053)** (7f19273)
- **fix: make orphaned room turn-planner usable via RoomConfig + pure Room runtime (fixes #5067)** (2306134)
- **fix: isolate sync workflow bridge and keep per-run closures off cli_config (fixes #5060)** (deb93c9)
- **fix: import-time process hijacking, output-singleton race, ImageAgent fake-async (#5162) (#5219)** (5c7d76d)
- **fix: add first-class attachment contract to gateway protocol (#5208)** (361a707)
- **fix: wire declarative scope registry into gateway dispatch (#5217)** (604ed80)
- **fix: offload blocking ImageAgent calls from async methods (#5187)** (db49ed5)
- **fix: surface quoted-reply context to gateway agents (#5224)** (ecb0b28)
- **fix: enforce tool loop step limits on continuations (#5186)** (c0ee77a)
- **fix: contain native Chroma memory initialization failures (#5188)** (49e44b0)
- **fix: remove dead run_coroutine_safely import in agents/agents.py (fixes #5181) (#5209)** (f9d5db5)
- **fix: salvage text-format tool calls in-process (#5160) (#5215)** (5c15a22)
- **fix: per-tenant/per-scope concurrency admission fairness (#5216)** (dddb18e)
- **fix: gate conversation-content plugin hooks behind a least-privilege grant (#5221)** (57e43be)

### Backend
- **Release v4.7.11** (0807964)
- **Merge pull request #5233 from MervinPraison/claude/issue-5052-20260923-1220** (d22683a)
- **Merge origin/main into PR branch; dedupe llm token attribution with main** (4f0fc71)
- **Merge pull request #5245 from MervinPraison/claude/issue-5069-20260923-1222** (7b98896)
- **Merge origin/main into PR branch; align llm attribution with main** (953f2a9)
- **Merge pull request #5228 from MervinPraison/claude/issue-5060-20260923-1221** (6066f63)
- **Merge origin/main into PR branch** (a556236)
- **Merge origin/main into PR branch** (14beec2)
- **Merge pull request #5258 from MervinPraison/claude/issue-5257-20260924-0724** (19d8280)
- **Merge origin/main into PR branch; use DynamicLimiter concurrency from main** (c2d8742)
- **Merge origin/main into claude/issue-5257 (PR #5258)** (2096c2b)
- **Merge pull request #5260 from MervinPraison/claude/issue-5259-20260924-0826** (c9f4b35)
- **Merge origin/main into PR branch** (019d099)
- **Merge pull request #5326 from MervinPraison/claude/issue-5324-20260926-0914** (0d04ae3)
- **Merge origin/main into PR branch** (edcd3b9)
- **Merge pull request #5330 from MervinPraison/claude/issue-5329-20260927-0718** (e006e07)
- **Merge origin/main into PR branch** (17f535a)
- **Merge pull request #5332 from MervinPraison/claude/issue-5331-20260927-0821** (e020813)
- **Block auto-merge for external-only example PRs.** (84c322b)
- **Merge origin/main into PR branch** (bb1030d)
- **Merge pull request #5350 from MervinPraison/claude/issue-5349-20260928-0918** (4c63895)
- **Merge origin/main; keep streaming ContextVar import, align llm attribution with main** (68e4e3f)
- **Merge pull request #5352 from MervinPraison/claude/issue-5351-20260928-0952** (7be7e22)
- **Merge origin/main into PR branch; resolve llm.py attribution overlap with main** (d8d6672)
- **Merge pull request #5229 from MervinPraison/claude/issue-5067-20260923-1222** (c4e5614)
- **Merge pull request #5230 from MervinPraison/claude/issue-5053-20260923-1221** (885d380)
- **Merge pull request #5232 from MervinPraison/claude/issue-5054-20260923-1221** (400199a)
- **Merge pull request #5234 from MervinPraison/claude/issue-5065-20260923-1222** (4cf0bf9)
- **Merge pull request #5236 from MervinPraison/claude/issue-5055-20260923-1221** (fddf6ee)
- **Merge pull request #5238 from MervinPraison/claude/issue-5064-20260923-1221** (98801bd)
- **Merge pull request #5240 from MervinPraison/claude/issue-5150-20260923-1224** (c48cb2d)
- **Merge pull request #5241 from MervinPraison/claude/issue-5154-20260923-1226** (1a9642d)
- **Merge pull request #5242 from MervinPraison/claude/issue-5062-20260923-1221** (40e766b)
- **Merge pull request #5246 from MervinPraison/claude/issue-5146-20260923-1223** (d6d8497)
- **Merge pull request #5247 from MervinPraison/claude/issue-5149-20260923-1223** (8fab828)
- **Merge pull request #5248 from MervinPraison/claude/issue-5157-20260923-1240** (8d2314b)
- **Merge pull request #5263 from MervinPraison/claude/issue-5261-20260924-0915** (692984a)
- **Merge pull request #5267 from MervinPraison/claude/issue-5264-20260924-0950** (4d7cdec)
- **Merge pull request #5305 from MervinPraison/claude/issue-5304-20260925-0721** (22e4e63)
- **Merge pull request #5310 from MervinPraison/claude/issue-5308-20260925-0903** (6cde2dc)
- **Merge pull request #5328 from MervinPraison/claude/issue-5327-20260926-0948** (1165e53)
- **Merge pull request #5334 from MervinPraison/claude/issue-5333-20260927-0911** (ab016e1)
- **Merge pull request #5336 from MervinPraison/claude/issue-5335-20260927-0955** (0f03856)
- **Merge pull request #5338 from MervinPraison/claude/issue-5337-20260928-0722** (91c9e95)
- **Merge pull request #5357 from MervinPraison/claude/issue-5356-20260929-0716** (f405ac0)
- **Merge pull request #5360 from MervinPraison/claude/issue-5358-20260929-0821** (b63198e)

### Tests
- **test: add regression coverage for scoped workflow bridge and dispatch merge** (593457b)

### Docs
- **docs: auto-update feature parity trackers [skip ci]** (44f35bc)
- **docs: auto-update documentation parity trackers [skip ci]** (de9320b)
- **docs: auto-update api.md [skip ci]** (f48320a)
- **docs: auto-update documentation parity trackers [skip ci]** (1c6a238)
- **docs: auto-update feature parity trackers [skip ci]** (8c58ca5)
- **docs: auto-update api.md [skip ci]** (dd2c326)
- **docs: auto-update feature parity trackers [skip ci]** (b744719)

### Chore
- **chore: ignore local .worktrees directory** (d3778f8)
- **ci: fix cross-repo workflow action references (#5183)** (83a2b54)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/MervinPraison/PraisonAI?utm_source=github-action)._