一个问题/PR正文中的长 URL 存储在一个代码跨度中, 打破链接

作者: flungo创建于 2026年9月17日更新于 2026年9月17日

104个或以上的字符,通过MCP被写入一个问题机构或Pull Request描述的URL,被包裹在一个双反相码跨. 103个字符,下面是逐字记录。

然后在GitHub上断开链接,不仅在通过服务器的回读中——渲染的页面显示了链接应该位于何处的代码跨度.

□再现.

写出一个包含标记下链接的正文,其目的地为104个字符或更长,然后通过REST API读取被存储的正文,这样所读取的路径就不属于画面.

发送 :

[link] (https://example.com/T104-012345678901234567890123697890123678) (中文(简体) ).

存储 :

[link] ("https://example.com"/T104-012345678901234567890123478").

相同的 URL 一个字符的短存储未受影响 :

[link] (https://example.com/T104-0123456789012345678901892023697) (中文(简体) ).

∮我所改变的∮

将长度分二步走,再由一步走过边界(复制):

|可变 | 结果 | | -- -- -- -- -- -- --

  • 长度104是边界——96、98、100、101、102和103商店清洁;104、106、108、128、148、168和188都是包好的。
  • 主机* * * 与184个包装完全相同。 ++ 构造 ++ 无关 – 标记下链接目的地, 赤裸的 URL 和自动链接全部包; 自动链接的 ++ 和 +++ 被附加逃脱到实体 +++
  • 写作工具 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

关闭后背的地块因长度而异:在链接的括号内,大约为104至130个;在它们外,吞下`',大约为148个。

一个值得注意的后果是:由于行为既适用于赤裸的URL,也适用于链接目的地,所以MCP客户端不能在发布此报告时以工作实例为例——这个实例被被被报道的行为所腐蚀. 这个尸体是用手贴的

与3165号不同

这条是读取-修改-写作 持续读取丢失, 并声明新写不会触发它。 在这里,这个机构是新组成的,从来没有先读过,有一个明确的长度阈值,这个问题都没有说明。

这可能是较新的身体过滤工作(#3035,#3177)的副作用,它通过包装而不是删除来保留一个长的符号,但我还没有核实这一点,也无法知道哪个服务器版本服务于这些呼叫.

由Claude代码驱动,通过远程MCP端点观察2026-09-17.

内容来源: github/github-mcp-server