git clone over HTTPS fails with socket error while node's HTTPS to the same host succeeds (secure-exec VM)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- git, node.js, rust
- 领域
- devtools, networking
调研方向
首先使用 git clone 和成功的 Node TCP/HTTPS 探测,通过 vm.exec 重现故障,然后阅读 registry/native/crates/libs/git/README.md 并检查已发布 package 的传输行为。确定是否支持 HTTPS 克隆、errno 21 在此路径中代表什么,以及报告的子命令是否是有意设计的;当传输行为和错误得到解释或修正时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Summary
git clone over HTTPS fails inside the secure-exec VM with a socket error, while node's own TCP and HTTPS reach the same host from the same VM in the same session. Network egress is permitted to github.com, so this looks like the git transport rather than the sandbox policy.
$ git clone https://github.com/octocat/Hello-World.git /tmp/repo
exit=128
Cloning into '/tmp/repo'...
fatal: fetch info/refs failed: socket error: connect(github.com:443) failed: errno 21
Immediately afterwards, in the same VM:
same VM, node stdlib to the same host:
TCP ok
HTTPS 200
Environment
@rivet-dev/agentos |
0.2.15 |
@agentos-software/git |
0.3.3 |
@agentos-software/common |
0.2.15 |
| engine | rivetdev/engine:2.3.9 (self-hosted) |
| worker base | node:24-slim |
VM permissions are default: deny with an explicit allowlist; github.com is allowed for both tcp://github.com:* and dns://github.com. A denied host fails differently and says so explicitly (EACCES … blocked by network.http policy), which is how we ruled the policy out — the message above is a socket error with no policy mention.
Reproduction
const vm = client.vm.getOrCreate("repro-" + Date.now());
// fails
await vm.exec("git clone https://github.com/octocat/Hello-World.git /tmp/repo");
// succeeds, same VM, same host
const probe = `
const net = require('net'), https = require('https');
net.connect({host:'github.com', port:443}, function(){ console.log('TCP ok'); this.destroy(); });
https.get({host:'github.com', path:'/', headers:{'User-Agent':'p'}}, r => { console.log('HTTPS ' + r.statusCode); r.destroy(); });
`;
await vm.exec(`node -e "eval(Buffer.from('${Buffer.from(probe).toString("base64")}','base64').toString())"`);
Questions
- Is HTTPS a supported clone transport for
@agentos-software/git? The error text points atregistry/native/crates/libs/git/README.md, which I can't see from the published package — the.aospkgdoes containgit://,ssh://andhttps://strings, so it reads as intended-but-not-working rather than unsupported. - If HTTPS is supported, does the git transport use a different egress path from node's stdlib — one that needs allowlisting separately from
tcp://host:port? That would explain a socket error while node succeeds. - What does
errno 21mean here? Other in-VM errors use WASI numbering (os error 44for ENOENT), which would make 21EFAULTand doesn't obviously fit aconnect().
Also, minor
A few subcommands report as unimplemented — flagging in case the list is unintentional rather than by design:
git --version→GitSubcommandUnsupportedgit log→GitSubcommandUnsupportedgit clone --depth 1 <url> <dest>→fatal: usage: git clone <source> [<destination>]
--version in particular is a common probe for "is git usable here", so it failing makes capability detection awkward.
Workaround
Fetching the repository as a tarball from codeload.github.com over plain HTTPS and unpacking with tar from @agentos-software/common, which works. Posting mainly because a working clone would give us verbatim transport output and ref handling that the tarball path doesn't.
- 主要语言
- Rust
- 星标
- 4.7k
- 派生
- 263
- 平均合并
- 9 小时 13 分钟
- 30 天内合并 PR
- 29
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
rivet-dev/agentos 的其他 Issue
-
`runtime.python` fails with "command not found: python" on a default VM (0.2.21, 0.2.22); Pyodide-distribution packages don't install可能已有人在做 @eersnington 今天认领。 未关闭
难度 4/5 3-5 天 新手友好度 18/100
rivet-dev/agentos#2027 · 1 条评论 ·
维护者通常 1 天内回复
-
Python edits to filesystem.writeFile-created files are reverted by shadow reconciliation可能已有人在做 @ankssjain 于 3 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 20/100
rivet-dev/agentos#2022 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 半天 新手友好度 32/100
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 45/100
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 66/100
rivet-dev/agentos#1994 · 1 条评论 ·
维护者通常 1 天内回复
查看 rivet-dev/agentos 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
mishraprafful/multihull#150 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
voidzero-dev/vite-plus#2970 ·
维护者通常 1 天内回复
-
ai_p2 comp-parquet-reader-v3
难度 2/5 半天 新手友好度 66/100
ClickHouse/ClickHouse#124986 ·
维护者通常 1 天内回复
-
bug(ktuner): exporter directories hide daemon processes可能已有人在做 @iloveeyjafjalla 今天认领。 未关闭component:ktuner
难度 2/5 1-3 小时 新手友好度 62/100
agentic-os-org/ANOLISA#6905 · 1 条评论 ·
维护者通常 1 天内回复
-
[Feature]: [P3] engine-rs: the package source hash should ignore line endings and untracked files未关闭
难度 2/5 1-3 小时 新手友好度 70/100
maniator/verticopolis#880 ·
维护者通常 1 天内回复