Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

git clone over HTTPS fails with socket error while node's HTTPS to the same host succeeds (secure-exec VM)

Đang mở
#1,920 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
48/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
git, node.js, rust
Lĩnh vực
devtools, networking

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện lỗi với vm.exec bằng git clone và probe TCP/HTTPS của Node cho kết quả thành công, sau đó đọc registry/native/crates/libs/git/README.md và kiểm tra hành vi truyền tải của package đã được publish. Xác định liệu việc clone qua HTTPS có được hỗ trợ hay không, errno 21 đại diện cho điều gì trong đường dẫn này và liệu các subcommand được báo cáo có phải là chủ đích hay không; hoàn tất khi hành vi truyền tải và các lỗi được giải thích hoặc sửa chữa.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

  1. Is HTTPS a supported clone transport for @agentos-software/git? The error text points at registry/native/crates/libs/git/README.md, which I can't see from the published package — the .aospkg does contain git://, ssh:// and https:// strings, so it reads as intended-but-not-working rather than unsupported.
  2. 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.
  3. What does errno 21 mean here? Other in-VM errors use WASI numbering (os error 44 for ENOENT), which would make 21 EFAULT and doesn't obviously fit a connect().

Also, minor

A few subcommands report as unimplemented — flagging in case the list is unintentional rather than by design:

  • git --version → GitSubcommandUnsupported
  • git log → GitSubcommandUnsupported
  • git 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.

Ngôn ngữ chính
Rust
Star
4.7k
Fork
263
Merge trung bình
9 giờ 43 phút
Pull request đã merge (30 ngày)
27

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của rivet-dev/agentos

Tất cả issue của rivet-dev/agentos

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.