From bcfe539662918fdb05d7dafa126fb9df365fc80f Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 05:40:34 +0000 Subject: [PATCH 1/2] docs: add changelog entries for secret-redact fixes and hook positioning --- mintlify/changelog/overview.mdx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/mintlify/changelog/overview.mdx b/mintlify/changelog/overview.mdx index 435974a..3d0469c 100644 --- a/mintlify/changelog/overview.mdx +++ b/mintlify/changelog/overview.mdx @@ -27,4 +27,31 @@ When the gate blocks, the repair checklist now leads with `forge verify` so the evidence gets recorded before the handoff snapshot. See [Cross-session memory](/concepts/cross-session-memory). +**Clearer positioning for hooks and guardrails.** Forge's automatic hooks are +Claude Code-specific, and — like every other advisory signal — they're +off-by-default until you opt in with `FORGE_ENFORCE=1`. The guardrails are +defence in depth, not a security sandbox. Nothing about the runtime changed; +the docs and CLI copy just match what the tool actually does. See +[CLI overview](/cli/overview) and the +[Pre-action gate](/concepts/pre-action-gate). + +## Fixes + +**Secret redactor now preserves structured tool output.** Built-in tools like +Bash, Read, and Grep return structured objects, and the previous redactor +stringified those responses — which meant Claude Code silently discarded the +rewrite and the unredacted output stayed visible. The redactor now walks the +response recursively: strings are scrubbed in place, arrays and objects keep +their keys and shape, and non-string leaves pass through untouched. Plain-string +responses redact byte-identically to before, and a response with nothing to +redact emits no rewrite at all. + +**`FORGE_GUARD_STRICT=1` exit status is no longer swallowed.** The redactor's +shell wrapper used to force a clean exit, hiding the strict-mode failure code +from Claude Code so the `DEGRADED` signal never surfaced. The child's exit +status is now propagated end-to-end, so strict mode's stderr feedback actually +reaches you. Note that this hook runs after the tool has already executed — +strict mode makes redactor degradation loud, but blocking a call before it runs +is the job of the [Pre-action gate](/concepts/pre-action-gate). + From 77b9ca7f03f234853d7706110b6f06043429a873 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 05:44:58 +0000 Subject: [PATCH 2/2] docs: translate July 19 changelog additions into cn, ar, hi, zh-CN, zh-Hans --- mintlify/ar/changelog/overview.mdx | 29 +++++++++++++++++++++++++ mintlify/cn/changelog/overview.mdx | 8 +++++++ mintlify/hi/changelog/overview.mdx | 29 +++++++++++++++++++++++++ mintlify/zh-CN/changelog/overview.mdx | 8 +++++++ mintlify/zh-Hans/changelog/overview.mdx | 8 +++++++ 5 files changed, 82 insertions(+) diff --git a/mintlify/ar/changelog/overview.mdx b/mintlify/ar/changelog/overview.mdx index 6d26e39..1459490 100644 --- a/mintlify/ar/changelog/overview.mdx +++ b/mintlify/ar/changelog/overview.mdx @@ -28,4 +28,33 @@ description: "استعرض أحدث ميزات Forge وتحسيناته، بما يُسجَّل الدليل قبل لقطة التسليم. راجع [الذاكرة عبر الجلسات](/ar/concepts/cross-session-memory). +**توضيح موقع الـ hooks والحواجز الوقائية.** الـ hooks التلقائية في Forge +خاصة بـ Claude Code تحديداً، وهي — كسائر الإشارات الاستشارية الأخرى — +مُعطَّلة افتراضياً حتى تُفعِّلها صراحةً عبر `FORGE_ENFORCE=1`. الحواجز +الوقائية هنا هي دفاع متعدد الطبقات، وليست صندوقاً أمنياً مُحكماً. لم يتغيّر +شيء في وقت التشغيل؛ فقط جرى ضبط نصوص الوثائق وسطر الأوامر لتُطابق ما تفعله +الأداة فعلياً. راجع [نظرة عامة على CLI](/ar/cli/overview) و +[بوابة ما قبل التنفيذ](/ar/concepts/pre-action-gate). + +## الإصلاحات + +**مُنقِّح الأسرار أصبح يحافظ على الإخراج المُهيكل للأدوات.** الأدوات +المدمجة مثل `Bash` و`Read` و`Grep` تُرجع كائنات مُهيكلة، وكان المُنقِّح +السابق يُحوِّل هذه الاستجابات إلى نصوص — ما كان يعني أن `Claude Code` +يتجاهل عملية إعادة الكتابة بصمت ويبقى الإخراج غير المُنقَّح ظاهراً. أصبح +المُنقِّح الآن يجتاز الاستجابة بشكل تعاودي: تُنظَّف السلاسل النصية في +مكانها، وتحتفظ المصفوفات والكائنات بمفاتيحها وبنيتها، وتمر الأوراق غير +النصية دون تغيير. الاستجابات النصية البسيطة تُنقَّح بشكل مطابق بايت ببايت +لما كان عليه الحال سابقاً، والاستجابة التي لا تحوي ما يستوجب التنقيح لا +تُصدر أي إعادة كتابة على الإطلاق. + +**حالة الخروج مع `FORGE_GUARD_STRICT=1` لم تعد تُبتلَع.** كان الغلاف +الصدفي (shell wrapper) للمُنقِّح يفرض خروجاً نظيفاً، مُخفياً رمز الفشل في +الوضع الصارم عن `Claude Code`، فلا تظهر إشارة `DEGRADED` أبداً. أصبحت +حالة خروج العملية الفرعية الآن تُنقَل من طرف إلى طرف، فتصلك فعلاً تغذية +`stderr` الراجعة الخاصة بالوضع الصارم. لاحظ أن هذا الـ hook يعمل بعد أن +تكون الأداة قد نُفِّذت بالفعل — فالوضع الصارم يجعل تدهور المُنقِّح +مسموعاً وواضحاً، لكن حجب استدعاء قبل تنفيذه هو مهمة +[بوابة ما قبل التنفيذ](/ar/concepts/pre-action-gate). + diff --git a/mintlify/cn/changelog/overview.mdx b/mintlify/cn/changelog/overview.mdx index 2c2b894..cbe01cb 100644 --- a/mintlify/cn/changelog/overview.mdx +++ b/mintlify/cn/changelog/overview.mdx @@ -15,4 +15,12 @@ description: "了解 Forge 的最新动态、功能改进与行为变更,帮 当该门拦截时,修复清单现在会以 `forge verify` 为首,以便在生成交接快照之前先记录证据。参见 [跨会话记忆](/cn/concepts/cross-session-memory)。 +**更清晰地定位钩子与护栏。** Forge 的自动钩子是 Claude Code 专属的,并且——与其他所有建议性信号一样——在你通过 `FORGE_ENFORCE=1` 显式启用之前默认关闭。这些护栏是纵深防御,而不是安全沙箱。运行时本身没有任何变化;只是文档与 CLI 文案与该工具的实际行为保持一致。参见 [CLI 概览](/cn/cli/overview) 和 [预操作门](/cn/concepts/pre-action-gate)。 + +## 修复 + +**密钥脱敏器现在会保留结构化的工具输出。** 像 Bash、Read 和 Grep 这样的内置工具会返回结构化对象,而先前的脱敏器会把这些响应字符串化——这意味着 Claude Code 会静默丢弃改写结果,未脱敏的输出仍然可见。脱敏器现在会递归遍历响应:字符串就地清洗,数组和对象保留其键和形状,非字符串的叶子节点原样透传。纯字符串响应的脱敏结果与之前逐字节一致,而没有任何内容需要脱敏的响应根本不会发出改写。 + +**`FORGE_GUARD_STRICT=1` 的退出状态不再被吞掉。** 脱敏器的 shell 包装脚本此前会强制以干净状态退出,将严格模式的失败码从 Claude Code 中隐藏起来,导致 `DEGRADED` 信号从未浮现。子进程的退出状态现在会端到端地透传,因此严格模式的 stderr 反馈才能真正送达你。请注意,该钩子是在工具已经执行之后运行的——严格模式让脱敏器的降级变得显眼,但在调用运行之前将其拦截,是 [预操作门](/cn/concepts/pre-action-gate) 的职责。 + diff --git a/mintlify/hi/changelog/overview.mdx b/mintlify/hi/changelog/overview.mdx index 72f25a5..33776f9 100644 --- a/mintlify/hi/changelog/overview.mdx +++ b/mintlify/hi/changelog/overview.mdx @@ -28,4 +28,33 @@ description: "Forge में नया क्या है — नवीनत हैंडऑफ़ स्नैपशॉट से पहले साक्ष्य दर्ज हो जाए। देखें [Cross-session memory](/hi/concepts/cross-session-memory)। +**हुक्स और गार्डरेल्स के लिए स्पष्ट पोज़िशनिंग।** Forge के ऑटोमैटिक हुक्स +`Claude Code`-विशिष्ट हैं, और — बाकी हर सलाहकार सिग्नल की तरह — जब तक आप +`FORGE_ENFORCE=1` के साथ ऑप्ट-इन नहीं करते, तब तक वे डिफ़ॉल्ट रूप से बंद रहते +हैं। गार्डरेल्स डिफेंस-इन-डेप्थ हैं, कोई सिक्योरिटी सैंडबॉक्स नहीं। रनटाइम में +कुछ भी नहीं बदला है; बस डॉक्स और CLI कॉपी अब वही कहती हैं जो टूल असल में करता +है। देखें [CLI overview](/hi/cli/overview) और +[Pre-action gate](/hi/concepts/pre-action-gate)। + +## फ़िक्स + +**सीक्रेट रिडैक्टर अब स्ट्रक्चर्ड टूल आउटपुट को सुरक्षित रखता है।** `Bash`, +`Read`, और `Grep` जैसे बिल्ट-इन टूल्स स्ट्रक्चर्ड ऑब्जेक्ट्स लौटाते हैं, और +पिछला रिडैक्टर उन रेस्पॉन्सेस को स्ट्रिंगिफ़ाई कर देता था — जिसका अर्थ था कि +`Claude Code` चुपचाप रीराइट को छोड़ देता और बिना रिडैक्ट किया आउटपुट दिखता +रहता। अब रिडैक्टर रेस्पॉन्स में रिकर्सिवली चलता है: स्ट्रिंग्स को उसी जगह +स्क्रब किया जाता है, ऐरे और ऑब्जेक्ट अपनी कीज़ और आकार बनाए रखते हैं, और +गैर-स्ट्रिंग लीफ़्स अछूती पास होती हैं। सादे-स्ट्रिंग रेस्पॉन्सेस बाइट-दर-बाइट +पहले जैसे ही रिडैक्ट होते हैं, और जिस रेस्पॉन्स में रिडैक्ट करने को कुछ नहीं +है, उसके लिए कोई रीराइट जारी नहीं होता। + +**`FORGE_GUARD_STRICT=1` का एग्ज़िट स्टेटस अब निगला नहीं जाता।** रिडैक्टर का +शेल रैपर पहले क्लीन एग्ज़िट फ़ोर्स करता था, जिससे स्ट्रिक्ट-मोड का फ़ेल्योर +कोड `Claude Code` से छिप जाता और `DEGRADED` सिग्नल कभी सामने नहीं आता था। अब +चाइल्ड का एग्ज़िट स्टेटस एंड-टू-एंड प्रोपेगेट किया जाता है, जिससे स्ट्रिक्ट +मोड का stderr फ़ीडबैक असल में आप तक पहुँचता है। ध्यान दें कि यह हुक टूल के +पहले ही चल जाने के बाद चलता है — स्ट्रिक्ट मोड रिडैक्टर के डिग्रेडेशन को +मुखर बनाता है, लेकिन किसी कॉल को चलने से पहले रोकना +[Pre-action gate](/hi/concepts/pre-action-gate) का काम है। + diff --git a/mintlify/zh-CN/changelog/overview.mdx b/mintlify/zh-CN/changelog/overview.mdx index c49cfe2..389a204 100644 --- a/mintlify/zh-CN/changelog/overview.mdx +++ b/mintlify/zh-CN/changelog/overview.mdx @@ -15,4 +15,12 @@ description: "Forge 的最新变化、功能更新与改进说明,帮助你及 当此门拦截时,修复检查清单现在会以 `forge verify` 作为首要步骤,以便在生成 handoff 快照之前先记录证据。参见[跨会话记忆](/zh-CN/concepts/cross-session-memory)。 +**更清晰地界定钩子与护栏的定位。** Forge 的自动钩子是 Claude Code 专属的,并且——与其他所有咨询性信号一样——在你通过 `FORGE_ENFORCE=1` 显式启用之前默认处于关闭状态。这些护栏是纵深防御,而不是安全沙箱。运行时本身没有任何变化;文档与 CLI 文案只是与工具的实际行为保持一致。参见 [CLI 概览](/zh-CN/cli/overview)和[前置操作门](/zh-CN/concepts/pre-action-gate)。 + +## 修复 + +**密钥脱敏器现在会保留结构化的工具输出。** Bash、Read 和 Grep 等内置工具返回的是结构化对象,而先前的脱敏器会把这些响应字符串化——这意味着 Claude Code 会悄悄丢弃改写结果,未经脱敏的输出仍会保持可见。脱敏器现在会递归遍历响应:字符串就地清洗,数组和对象保留其键与结构,非字符串叶子则原样透传。纯字符串响应的脱敏结果与此前逐字节一致,而没有任何内容需要脱敏的响应则完全不会触发改写。 + +**`FORGE_GUARD_STRICT=1` 的退出状态不再被吞掉。** 脱敏器的 shell 包装脚本此前会强制返回干净的退出码,从而把严格模式的失败码对 Claude Code 隐藏起来,导致 `DEGRADED` 信号始终无法浮现。子进程的退出状态现在会端到端地向上传递,因此严格模式在 stderr 上的反馈能够真正抵达你。请注意,这个钩子是在工具已经执行之后才运行的——严格模式让脱敏器的降级变得显眼,但在调用真正执行之前将其拦截,是[前置操作门](/zh-CN/concepts/pre-action-gate)的职责。 + diff --git a/mintlify/zh-Hans/changelog/overview.mdx b/mintlify/zh-Hans/changelog/overview.mdx index acf2d01..5469766 100644 --- a/mintlify/zh-Hans/changelog/overview.mdx +++ b/mintlify/zh-Hans/changelog/overview.mdx @@ -15,4 +15,12 @@ description: "了解 Forge 的最新变化、功能更新与关键行为调整 当完成门拦截时,修复清单现在会以 `forge verify` 起头,以便先记录证据,再进行 handoff 快照。参见 [跨会话记忆](/zh-Hans/concepts/cross-session-memory)。 +**更清晰地定位 hooks 与护栏的角色。** Forge 的自动化 hooks 仅面向 Claude Code,并且——与其他所有咨询性信号一样——默认关闭,直到你通过 `FORGE_ENFORCE=1` 主动启用。这些护栏是纵深防御,而不是安全沙箱。运行时本身没有任何变化;只是文档与 CLI 文案与工具的实际行为保持一致。参见 [CLI 总览](/zh-Hans/cli/overview) 与 [前置操作门](/zh-Hans/concepts/pre-action-gate)。 + +## 修复 + +**秘密脱敏器现在会保留结构化的工具输出。** Bash、Read、Grep 等内置工具会返回结构化对象,而此前的脱敏器会把这些响应字符串化——这意味着 Claude Code 会悄悄丢弃改写结果,未脱敏的输出依然可见。现在脱敏器会递归遍历响应:字符串就地清洗,数组与对象保持其键与结构,非字符串叶子节点则原样透传。纯字符串响应的脱敏结果与此前逐字节一致,并且当响应中没有任何需要脱敏的内容时,不会发出任何改写。 + +**`FORGE_GUARD_STRICT=1` 的退出状态不再被吞掉。** 脱敏器的 shell 包装脚本此前会强制以干净状态退出,把严格模式的失败码对 Claude Code 隐藏了起来,因此 `DEGRADED` 信号从未浮现出来。现在子进程的退出状态会被端到端透传,严格模式的 stderr 反馈才真正能到达你面前。请注意,该 hook 是在工具执行之后才运行——严格模式会让脱敏器降级变得显眼,但在调用发生之前拦截它,仍然是 [前置操作门](/zh-Hans/concepts/pre-action-gate) 的职责。 +