Matches pi wrapToolsWithActionGate semantics: callers that omit actionGateContext (chat/triage) intentionally leave tools ungated. Add a content-free warn when a non-pi runtime receives customTools without gate context so the path is visible without inventing deny-all defaults.