Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#1,920 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
git, node.js, rust

調査の方向性

まず、git clone と成功する Node TCP/HTTPS プローブを使って vm.exec で失敗を再現し、次に registry/native/crates/libs/git/README.md を読み、公開済みパッケージのトランスポート動作を調査します。HTTPS による clone がサポートされているか、このパスで 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

  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.

主要言語
Rust
スター
4.7k
フォーク
263
平均マージ
9時間 43分
マージ済み PR(30日)
27

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

rivet-dev/agentos のほかの issue

rivet-dev/agentos の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。