{"id":47847,"date":"2026-09-06T10:00:00","date_gmt":"2026-09-06T07:00:00","guid":{"rendered":"https:\/\/ip-calculator.ru\/blog\/?p=47847"},"modified":"2026-08-30T03:36:03","modified_gmt":"2026-08-30T00:36:03","slug":"kejs-codex-mcp-interception","status":"publish","type":"post","link":"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/kejs-codex-mcp-interception\/","title":{"rendered":"\u041a\u0435\u0439\u0441: Codex 0.151 \u2014 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 MCP tool results \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0430\u044f grace period"},"content":{"rendered":"<div class=\"flat_pm_start\"><\/div>\n<p>MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 Codex CLI: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u043e\u0432\u044b\u0435 \u0442\u0443\u043b\u0437\u044b (\u043f\u043e\u0438\u0441\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a API). \u041d\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 0.151.0 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 MCP-\u0442\u0443\u043b\u0437\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u043b \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u2014 \u0431\u0435\u0437 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u0431\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u0431\u0435\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443. \u0420\u0435\u043b\u0438\u0437 29 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2026 \u0433\u043e\u0434\u0430 (<a href=\"https:\/\/github.com\/openai\/codex\/releases\/tag\/rust-v0.151.0\">GitHub<\/a>) \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0434\u0432\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u0443: \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (extensions) \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b MCP-\u0442\u0443\u043b\u0437\u043e\u0432 \u0434\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044c, \u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0442\u0430\u0440\u0442\u0430 \u0434\u043b\u044f optional-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441\u0442\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439. \u041d\u0438\u0436\u0435 \u2014 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n<figure><img decoding=\"async\" alt=\"\u0420\u0435\u043b\u0438\u0437 Codex 0.151.0 \u043d\u0430 GitHub (29.08.2026)\" src=\"https:\/\/ip-calculator.ru\/blog\/wp-content\/uploads\/2026\/09\/codex-releases-0151.png\" \/><figcaption>\u0417\u0430\u043f\u0438\u0441\u044c \u0440\u0435\u043b\u0438\u0437\u0430 Codex 0.151.0: \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 MCP tool results \u0438 grace period. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: github.com\/openai\/codex\/releases.<\/figcaption><\/figure>\n<h2>\u0427\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0432 0.151.0<\/h2>\n<p>\u0422\u0440\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0444\u0438\u0447\u0438 \u0440\u0435\u043b\u0438\u0437\u0430 (<a href=\"https:\/\/github.com\/openai\/codex\/releases\/tag\/rust-v0.151.0\">changelog<\/a>):<\/p>\n<table>\n<thead>\n<tr>\n<th>\u0424\u0438\u0447\u0430<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442<\/th>\n<th>\u041f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Extension MCP result interception<\/td>\n<td>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b MCP-\u0442\u0443\u043b\u0437\u043e\u0432 \u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c<\/td>\n<td><a href=\"https:\/\/github.com\/openai\/codex\/pull\/41202\">#41202<\/a><\/td>\n<\/tr>\n<tr>\n<td>Configurable grace period<\/td>\n<td>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f optional MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435<\/td>\n<td><a href=\"https:\/\/github.com\/openai\/codex\/pull\/41199\">#41199<\/a><\/td>\n<\/tr>\n<tr>\n<td>Per-repo plugin catalog<\/td>\n<td>\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/td>\n<td><a href=\"https:\/\/github.com\/openai\/codex\/pull\/41208\">#41208<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435:<\/p>\n<pre><code class=\"language-bash\">codex --version   # \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e\n# \u0434\u043b\u044f standalone:\ncurl -fsSL https:\/\/chatgpt.com\/codex\/install.sh | sh\n# \u0434\u043b\u044f npm:\nnpm update -g @openai\/codex\n<\/code><\/pre>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 <strong>0.151.0<\/strong> (\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0442\u043e\u0438\u0442 0.149.0 \u0438\u043b\u0438 0.150.0 \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u043e\u0431\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445.<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b MCP-\u0442\u0443\u043b\u0437\u043e\u0432<\/h2>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d MCP \u0432 Codex \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0443\u043b\u0437\u0443 \u2192 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u2192 JSON-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u0440\u0451\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c situations (\u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c <a href=\"https:\/\/github.com\/openai\/codex\/pull\/41202\">PR #41202<\/a>):<\/p>\n<ol>\n<li>\n<p><strong>\u0421\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u043e\u0442\u0432\u0435\u0442\u0430\u0445.<\/strong> MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c API-\u0442\u043e\u043a\u0435\u043d\u044b, \u043f\u0430\u0440\u043e\u043b\u0438 \u0438\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0432 \u0442\u0435\u043b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0438\u0445 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043a\u043e\u0434\u0435 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/strong> \u041a\u043e\u0433\u0434\u0430 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 (<code>isError: true<\/code>), \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u044b\u0440\u043e\u0439 JSON \u0441technical details \u2014 stack trace, HTTP-\u043a\u043e\u0434\u044b, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0437\u0434\u0443\u0442\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u044b.<\/strong> \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 MCP-\u0442\u0443\u043b\u0437\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 JSON-\u043e\u0442\u0432\u0435\u0442\u044b (\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0441\u043f\u0438\u0441\u043a\u0438, \u0434\u0430\u043c\u043f\u044b). \u0411\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043d\u0438 \u0441\u044a\u0435\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043e 0.151.0 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043c\u043f\u0442 \u2014 \u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u00ab\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b\u00bb \u0438\u043b\u0438 \u00ab\u043a\u0440\u0430\u0442\u043a\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438\u00bb. \u042d\u0442\u043e \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u043e: \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u044f\u0445.<\/p>\n<figure><img decoding=\"async\" alt=\"\u0421\u0445\u0435\u043c\u0430: \u043f\u043e\u0442\u043e\u043a MCP tool result \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c\" src=\"https:\/\/ip-calculator.ru\/blog\/wp-content\/uploads\/2026\/09\/mcp-flow-comparison.png\" \/><figcaption>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432: \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (\u0441\u043b\u0435\u0432\u0430) \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 MCP-\u0442\u0443\u043b\u0437\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e; \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c (\u0441\u043f\u0440\u0430\u0432\u0430) \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 on_mcp_tool_result() \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<\/figcaption><\/figure>\n<h2>Extension MCP result interception: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h2>\n<p>\u0421 0.151.0 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (extensions) \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>on_mcp_tool_result<\/code> (<a href=\"https:\/\/github.com\/openai\/codex\/pull\/41202\">PR #41202<\/a>). \u041a\u043e\u043b\u0431\u044d\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f MCP-\u0432\u044b\u0437\u043e\u0432\u0430, \u043d\u043e \u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0434\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 completion-\u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<h3>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>ToolLifecycleContributor<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"language-rust\">fn on_mcp_tool_result&lt;'a&gt;(&amp;'a self, _input: McpToolResultInput&lt;'a&gt;) -&gt; ToolLifecycleFuture&lt;'a&gt; {\n    Box::pin(std::future::ready(()))\n}\n<\/code><\/pre>\n<p><code>McpToolResultInput<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 (<a href=\"https:\/\/github.com\/openai\/codex\/blob\/main\/codex-rs\/ext\/extension-api\/src\/contributors\/tool_lifecycle.rs\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/a>):<\/p>\n<table>\n<thead>\n<tr>\n<th>\u041f\u043e\u043b\u0435<\/th>\n<th>\u0422\u0438\u043f<\/th>\n<th>\u0427\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>session_store<\/code><\/td>\n<td><code>&amp;SessionExtensionData<\/code><\/td>\n<td>\u0414\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0435\u0441\u0441\u0438\u0438<\/td>\n<\/tr>\n<tr>\n<td><code>thread_store<\/code><\/td>\n<td><code>&amp;ThreadExtensionData<\/code><\/td>\n<td>\u0414\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0440\u0435\u0434\u0430<\/td>\n<\/tr>\n<tr>\n<td><code>turn_store<\/code><\/td>\n<td><code>&amp;TurnExtensionData<\/code><\/td>\n<td>\u0414\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0445\u043e\u0434\u0430<\/td>\n<\/tr>\n<tr>\n<td><code>turn_id<\/code><\/td>\n<td><code>&amp;str<\/code><\/td>\n<td>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0445\u043e\u0434\u0430<\/td>\n<\/tr>\n<tr>\n<td><code>call_id<\/code><\/td>\n<td><code>&amp;str<\/code><\/td>\n<td>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 MCP-\u0432\u044b\u0437\u043e\u0432\u0430<\/td>\n<\/tr>\n<tr>\n<td><code>mcp_tool<\/code><\/td>\n<td><code>&amp;McpToolContext<\/code><\/td>\n<td>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0443\u043b\u0437\u044b: \u0438\u043c\u044f, \u0441\u0435\u0440\u0432\u0435\u0440, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a (Connector \/ CodeMode)<\/td>\n<\/tr>\n<tr>\n<td><code>arguments<\/code><\/td>\n<td><code>&amp;Value<\/code><\/td>\n<td>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0442\u0443\u043b\u0437\u0430<\/td>\n<\/tr>\n<tr>\n<td><code>result<\/code><\/td>\n<td><code>&amp;mut CallToolResult<\/code><\/td>\n<td><strong>\u041c\u0443\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439<\/strong> \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 <code>result<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u0430\u043a <code>&amp;mut<\/code>: \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c. \u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a \u043e\u0431\u043e\u0438\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c \u2014 \u0438 \u0432 completion-\u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0434\u043b\u044f UI), \u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h3>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>\u041a\u043e\u0434 \u0438\u0437 <a href=\"https:\/\/github.com\/openai\/codex\/blob\/main\/codex-rs\/core\/src\/tools\/lifecycle.rs\">lifecycle.rs<\/a> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443:<\/p>\n<pre><code>MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u2192 result \u2192 on_mcp_tool_result() \u2192 sanitize \u2192 \u043c\u043e\u0434\u0435\u043b\u044c\n<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u043a\u0430\u0436\u0434\u043e\u0435 \u0432\u0438\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438: \u043f\u0435\u0440\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0432\u0442\u043e\u0440\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u0440\u0435\u0442\u044c\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<h3>\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 on_mcp_tool_result<\/h3>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 <a href=\"https:\/\/github.com\/openai\/codex\/blob\/main\/codex-rs\/core\/tests\/suite\/tool_lifecycle.rs\">\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 tool_lifecycle.rs<\/a>, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/th>\n<th>\u041f\u0440\u0438\u043c\u0435\u0440<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Unchanged<\/td>\n<td>\u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c<\/td>\n<td>\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 MCP-\u0432\u044b\u0437\u043e\u0432\u0430<\/td>\n<\/tr>\n<tr>\n<td>Replace<\/td>\n<td>\u0417\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/td>\n<td>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430<\/td>\n<\/tr>\n<tr>\n<td>Error<\/td>\n<td>\u041f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043e\u0448\u0438\u0431\u043a\u0443<\/td>\n<td>\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442\u0432\u0435\u0442\u0430<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 MCP-\u0442\u0443\u043b\u0437 \u2014 \u043f\u0440\u044f\u043c\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 (Direct) \u0438 \u0432\u044b\u0437\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Code Mode (<code>tools.mcp__*<\/code> \u0432 exec-\u0440\u0435\u0436\u0438\u043c\u0435). \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (<a href=\"https:\/\/github.com\/openai\/codex\/pull\/41202\/files\">\u0442\u0435\u0441\u0442\u044b<\/a>).<\/p>\n<h2>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/h2>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u0432\u0430\u0441 MCP-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 API. \u041e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430:<\/p>\n<pre><code class=\"language-json\">{\n  &quot;content&quot;: [{&quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Results for query...&quot;}],\n  &quot;_meta&quot;: {\n    &quot;access_token&quot;: &quot;eyJhbGciOi...&quot;,\n    &quot;refresh_token&quot;: &quot;dGhpcyBpcyBh...&quot;\n  }\n}\n<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Codex \u043c\u043e\u0436\u0435\u0442 \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<pre><code class=\"language-rust\">impl ToolLifecycleContributor for SecretSanitizer {\n    fn on_mcp_tool_result&lt;'a&gt;(&amp;'a self, input: McpToolResultInput&lt;'a&gt;) -&gt; ToolLifecycleFuture&lt;'a&gt; {\n        Box::pin(async move {\n            \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u0437 _meta\n            if let Some(meta) = input.result.get_mut(&quot;_meta&quot;) {\n                if let Value::Object(map) = meta {\n                    map.remove(&quot;access_token&quot;);\n                    map.remove(&quot;refresh_token&quot;);\n                }\n            }\n        })\n    }\n}\n<\/code><\/pre>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0431\u0435\u0437 \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0441\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<h2>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/h2>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439: MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e <code>{ \"isError\": true, \"content\": [...] }<\/code> \u043e\u043d \u043e\u0442\u0434\u0430\u0451\u0442 plain-text \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 HTML:<\/p>\n<pre><code>Error: Connection refused to postgres:\/\/...\n<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u044b:<\/p>\n<pre><code class=\"language-rust\">impl ToolLifecycleContributor for ErrorNormalizer {\n    fn on_mcp_tool_result&lt;'a&gt;(&amp;'a self, input: McpToolResultInput&lt;'a&gt;) -&gt; ToolLifecycleFuture&lt;'a&gt; {\n        Box::pin(async move {\n            if input.result.is_error {\n                \/\/ \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0432\u0438\u0434\n                let text = input.result.content.iter()\n                    .filter_map(|c| match c {\n                        ContentItem::Text { text, .. } =&gt; Some(text.as_str()),\n                        _ =&gt; None,\n                    })\n                    .collect::&lt;Vec&lt;_&gt;&gt;()\n                    .join(&quot; &quot;);\n\n                \/\/ \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438: \u043f\u0443\u0442\u0438, \u0442\u043e\u043a\u0435\u043d\u044b, \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b\n                let clean = sanitize_error_message(&amp;text);\n\n                input.result.content = vec![ContentItem::Text {\n                    text: format!(&quot;MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u043e\u0448\u0438\u0431\u043a\u0443: {clean}&quot;),\n                    annotations: None,\n                }];\n            }\n        })\n    }\n}\n<\/code><\/pre>\n<p>\u0410\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0447\u0438\u0441\u0442\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0443\u0441\u043e\u0440.<\/p>\n<h2>Grace period \u0434\u043b\u044f optional MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u2014 <a href=\"https:\/\/github.com\/openai\/codex\/pull\/41199\">PR #41199<\/a>. \u0414\u043e 0.151.0 Codex \u0436\u0434\u0430\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e optional MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0438 \u044d\u0442\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u044b\u043b\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>mcp_optional_startup_grace_ms<\/code> \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h3>\n<p>\u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 Codex \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e. Required-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u2014 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c, Codex \u043d\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0443. Optional-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u2014 \u043d\u0435\u0442: \u0430\u0433\u0435\u043d\u0442 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0431\u0435\u0437 \u043d\u0438\u0445, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0437\u0430 \u043e\u0442\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (grace period) \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c.<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e grace period = 1000 \u043c\u0441 (<a href=\"https:\/\/github.com\/openai\/codex\/pull\/41199\">PR description<\/a>):<\/p>\n<blockquote>\n<p>Add <code>mcp_optional_startup_grace_ms<\/code> with a default of 1,000 ms to control how long tool catalog capture waits for optional MCP servers.<\/p>\n<\/blockquote>\n<h3>\u041a\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u0442\u044c grace period<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/th>\n<th>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/th>\n<th>\u041f\u043e\u0447\u0435\u043c\u0443<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0411\u044b\u0441\u0442\u0440\u044b\u0435 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435)<\/td>\n<td><code>1000<\/code> (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)<\/td>\n<td>\u0425\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/td>\n<\/tr>\n<tr>\n<td>\u0422\u044f\u0436\u0451\u043b\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b (\u0411\u0414, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0435 API)<\/td>\n<td><code>3000\u20135000<\/code><\/td>\n<td>\u0414\u0430\u0451\u043c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u0442<\/td>\n<\/tr>\n<tr>\n<td>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438<\/td>\n<td><code>0<\/code><\/td>\n<td>\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 <code>startup_timeout_sec<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h3>\n<p>\u0412 <code>config.toml<\/code> \u0438\u043b\u0438 <code>~\/.codex\/config.toml<\/code>:<\/p>\n<pre><code class=\"language-toml\"># \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f optional-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 (\u043c\u0441)\nmcp_optional_startup_grace_ms = 3000\n\n[mcp_servers.postgres]\ncommand = &quot;mcp-postgres&quot;\nargs = [&quot;postgresql:\/\/localhost\/mydb&quot;]\noptional = true\nstartup_timeout_sec = 5\n\n[mcp_servers.github]\ncommand = &quot;mcp-github&quot;\noptional = false  # required \u2014 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 grace period\n<\/code><\/pre>\n<p>\u041f\u0440\u0438 <code>mcp_optional_startup_grace_ms = 0<\/code> \u043e\u0431\u0449\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u2014 optional-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>startup_timeout_sec<\/code>. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043a: \u0447\u0430\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 (\u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e), \u0447\u0430\u0441\u0442\u044c \u2014 \u0442\u044f\u0436\u0451\u043b\u044b\u0435 (\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u043e 5\u201310 \u0441\u0435\u043a\u0443\u043d\u0434).<\/p>\n<figure><img decoding=\"async\" alt=\"\u0421\u0445\u0435\u043c\u0430: \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f grace period \u0434\u043b\u044f optional MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\" src=\"https:\/\/ip-calculator.ru\/blog\/wp-content\/uploads\/2026\/09\/grace-period-config.png\" \/><figcaption>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 grace period: \u0434\u043e 0.151.0 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u044b\u043b\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 (\u0441\u043b\u0435\u0432\u0430), \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 mcp_optional_startup_grace_ms (\u0441\u043f\u0440\u0430\u0432\u0430).<\/figcaption><\/figure>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u043d\u043e \u0438 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 MCP-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<blockquote>\n<p>Apply updated grace values during runtime and MCP configuration refreshes, and reset cached startup deadlines when the configured duration changes.<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c grace period \u0447\u0435\u0440\u0435\u0437 <code>\/cd<\/code> (\u0441\u043c\u0435\u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u0430\u043f\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433) \u0438\u043b\u0438 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u2014 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438.<\/p>\n<h2>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n<h3>1. \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f MCP-\u043e\u0442\u0432\u0435\u0442\u043e\u0432<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 <code>result.content<\/code> \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<h3>2. \u0410\u0443\u0434\u0438\u0442 MCP-\u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/h3>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 MCP-\u0432\u044b\u0437\u043e\u0432: \u0438\u043c\u044f \u0442\u0443\u043b\u0437\u044b, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u0432\u0435\u0442\u0430. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u043e\u043b\u0433\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u0443\u043b\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<h3>3. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h3>\n<p>\u0415\u0441\u043b\u0438 MCP-\u0442\u0443\u043b\u0437\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u042d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445.<\/p>\n<h3>4. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 grace period<\/h3>\n<p>\u0414\u043b\u044f production-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 optional-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\u0423\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 grace period \u0434\u043e 3\u20135 \u0441\u0435\u043a\u0443\u043d\u0434, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0442\u044f\u0436\u0451\u043b\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043a\u0430\u043a \u00ab\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439\u00bb<\/li>\n<li>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/li>\n<\/ol>\n<h2>\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0438<\/h2>\n<ul>\n<li><strong>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Codex CLI<\/strong> \u2014 \u0448\u0442\u0430\u0442\u043d\u044b\u0435: GitHub \u0438 npm \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u0437 \u0420\u0424 \u0431\u0435\u0437 VPN. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 <code>curl | sh<\/code> \u0438\u043b\u0438 <code>npm update -g @openai\/codex<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439.<\/li>\n<li><strong>\u0412\u0445\u043e\u0434<\/strong> \u2014 \u0447\u0435\u0440\u0435\u0437 ChatGPT (OAuth) \u0442\u0440\u0435\u0431\u0443\u0435\u0442 VPN \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 OpenAI \u043f\u043e \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c IP; \u0447\u0435\u0440\u0435\u0437 API-\u043a\u043b\u044e\u0447 (<code>OPENAI_API_KEY<\/code>) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435.<\/li>\n<li><strong>\u041e\u043f\u043b\u0430\u0442\u0430<\/strong> \u2014 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 Visa\/Mastercard \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b: \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u044b (\u043f\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0421\u0411\u041f \u0438\u043b\u0438 USDT), \u043a\u0430\u0440\u0442\u044b \u0431\u0430\u043d\u043a\u043e\u0432 \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d\u0430\/\u0413\u0440\u0443\u0437\u0438\u0438\/\u0410\u0440\u043c\u0435\u043d\u0438\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u2014 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/companies\/tehrevizor\/articles\/1015580\/\">\u00ab\u041a\u0430\u043a \u043e\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 ChatGPT \u0438\u0437 \u0420\u043e\u0441\u0441\u0438\u0438 \u0432 2026 \u0433\u043e\u0434\u0443\u00bb<\/a>.<\/li>\n<li><strong>Russian providers<\/strong> \u2014 Codex CLI \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441\u043e\u0431\u0440\u0430\u043b Codex CLI \u0441 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u043e\u043c \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 AI Studio API \u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/1006422\/\">\u00ab\u0410\u0433\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435: Codex CLI \u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 AI-\u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u00bb<\/a>.<\/li>\n<li><strong>\u0420\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/strong>: \u043f\u043e\u043b\u043d\u044b\u0439 \u0433\u0438\u0434 \u043f\u043e Codex CLI \u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/1040296\/\">\u00ab\u0423\u043b\u044c\u0442\u0438\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0433\u0438\u0434 \u043f\u043e Codex CLI\u00bb<\/a>, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 CLI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/1066540\/\">Habr, 4 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2026<\/a>.<\/li>\n<\/ul>\n<h2>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h2>\n<ul>\n<li><strong>Extensions \u2014perimental API.<\/strong> \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>ToolLifecycleContributor<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 0.151.0; \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>McpToolResultInput<\/code> \u0438 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u043b\u0438\u0437\u0430\u0445. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 changelog \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Codex.<\/li>\n<li><strong>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/strong> \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0443\u0431\u0435\u0436 \u043f\u0435\u0440\u0435\u0434 \u043c\u043e\u0434\u0435\u043b\u044c\u044e. \u0415\u0441\u043b\u0438 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e, \u0430 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u043f\u0442\u043e\u043c\u044b \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438.<\/li>\n<li><strong>Grace period \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 required-\u0441\u0435\u0440\u0432\u0435\u0440\u044b.<\/strong> \u0415\u0441\u043b\u0438 required MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u0437\u0430 <code>startup_timeout_sec<\/code>, Codex \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u2014 \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/li>\n<li><strong>\u041d\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<\/strong> Codex 0.151.0 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 API, \u043d\u043e \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0436\u0434\u0430\u0442\u044c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.<\/li>\n<li><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f.<\/strong> Grace period \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0442 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f optional-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043d\u043e \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u044a\u0451\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u0414\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0438 <code>\/new<\/code> \u043c\u0435\u0436\u0434\u0443 \u0431\u0430\u0442\u0447\u0430\u043c\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442\u0441\u044f \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/kak-ustanovit-codex-cli\/\">\u00ab\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Codex CLI\u00bb<\/a>.<\/li>\n<li><strong>\u0418\u0437 \u0420\u0424<\/strong> \u2014 \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f OpenAI \u043f\u043e \u0432\u0445\u043e\u0434\u0443 \u0438 \u043e\u043f\u043b\u0430\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f; extensions \u0438 grace period \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0440\u0435\u0433\u0438\u043e\u043d\u0430.<\/li>\n<\/ul>\n<h2>\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<ul>\n<li><a href=\"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/kak-ustanovit-codex-cli\/\">\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Codex CLI<\/a> \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u0432\u0445\u043e\u0434, \u043c\u043e\u0434\u0435\u043b\u0438<\/li>\n<li><a href=\"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/codex-dashbord-agentov\/\">Codex 0.149.0: \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0430\u0433\u0435\u043d\u0442\u043e\u0432<\/a> \u2014 agents dashboard, queue, \/cd<\/li>\n<li><a href=\"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/chto-takoe-mcp\/\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 MCP<\/a> \u2014 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0442\u0443\u043b\u0437\u044b<\/li>\n<li><a href=\"https:\/\/ip-calculator.ru\/blog\/artificial-intelligence\/chto-takoe-agentnyj-koding\/\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0433\u0435\u043d\u0442\u043d\u044b\u0439 \u043a\u043e\u0434\u0438\u043d\u0433<\/a> \u2014 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0445 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/li>\n<\/ul>\n<div class=\"flat_pm_end\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 Codex CLI: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u043e\u0432\u044b\u0435 \u0442\u0443\u043b\u0437\u044b (\u043f\u043e\u0438\u0441\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a API). \u041d\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 0.151.0 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 MCP-\u0442\u0443\u043b\u0437\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u043b \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u2014 \u0431\u0435\u0437 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u0431\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u0431\u0435\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443. \u0420\u0435\u043b\u0438\u0437 29 \u0430\u0432\u0433<\/p>\n","protected":false},"author":5,"featured_media":47849,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[262],"tags":[],"class_list":["post-47847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/posts\/47847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/comments?post=47847"}],"version-history":[{"count":1,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/posts\/47847\/revisions"}],"predecessor-version":[{"id":47848,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/posts\/47847\/revisions\/47848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/media\/47849"}],"wp:attachment":[{"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/media?parent=47847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/categories?post=47847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ip-calculator.ru\/blog\/wp-json\/wp\/v2\/tags?post=47847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}