{"record":{"id":"6f3e434b2f91a26e","repo":"xai-org/grok-build","slug":"e-not-adding-url-it-doesn-t-look-like-a-rea","errorCode":null,"errorMessage":"{e}\nNot adding \"{url}\": it doesn't look like a reachable git repository. Re-run with --force to add it anyway (e.g. a host only reachable on VPN).","messagePattern":"(.+?)\nNot adding \"(.+?)\": it doesn't look like a reachable git repository\\. Re-run with --force to add it anyway \\(e\\.g\\. a host only reachable on VPN\\)\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codegen/xai-grok-pager/src/plugin_cmd.rs","lineNumber":900,"sourceCode":"    let already_configured = match &input {\n        MarketplaceAddInput::GitUrl(git_url) => {\n            let normalized = git_url.trim_end_matches(\".git\");\n            sources.iter().any(|s| {\n                matches!(&s.kind, SourceKind::Git { url: u, .. }\n                    if u.trim_end_matches(\".git\") == normalized)\n            })\n        }\n        MarketplaceAddInput::LocalPath(path) => sources\n            .iter()\n            .any(|s| matches!(&s.kind, SourceKind::Local { path: p } if p == path)),\n    };\n    if already_configured {\n        bail!(\"Marketplace source already configured: {identity}\");\n    }\n\n    if !force && let MarketplaceAddInput::GitUrl(git_url) = &input {\n        xai_grok_plugin_marketplace::git::probe_git_remote(git_url).map_err(|e| {\n            anyhow::anyhow!(\n                \"{e}\\nNot adding \\\"{url}\\\": it doesn't look like a reachable git repository. \\\n                 Re-run with --force to add it anyway (e.g. a host only reachable on VPN).\"\n            )\n        })?;\n    }\n\n    let name = match &input {\n        MarketplaceAddInput::GitUrl(u) => plugin::name_from_url(u),\n        MarketplaceAddInput::LocalPath(p) => plugin::name_from_path(p),\n    };\n    let config_path = xai_grok_config::grok_home().join(xai_grok_config::USER_CONFIG_FILENAME);\n\n    let content = std::fs::read_to_string(&config_path).unwrap_or_default();\n    let mut doc: toml_edit::DocumentMut = content\n        .parse()\n        .map_err(|e| anyhow::anyhow!(\"Failed to parse config.toml: {e}\"))?;\n\n    if doc.get(\"marketplace\").is_none() {","sourceCodeStart":882,"sourceCodeEnd":918,"githubUrl":"https://github.com/xai-org/grok-build/blob/bc7f02eddd3d84085849dc19ed216f11c23b0571/crates/codegen/xai-grok-pager/src/plugin_cmd.rs#L882-L918","documentation":"`grok plugin marketplace add <git-url>` probes the remote with `probe_git_remote` before writing config. If the probe fails and `--force` was not passed, the URL is rejected with the underlying git error plus a hint to re-run with `--force` for hosts only reachable on VPN.","triggerScenarios":"Adding a marketplace source as a git URL when: the remote doesn't exist, credentials are missing, SSH keys aren't set up, DNS fails, or the host is only reachable via VPN — all without passing `--force`.","commonSituations":"Corporate/VPN-only git hosts; typo'd URL; missing SSH key for git@ URLs; offline laptop; private repo without auth configured.","solutions":["Fix connectivity/auth so `git ls-remote <url>` works (check URL, VPN, SSH keys, credentials)","If the host is intentionally unreachable from here (VPN-only), re-run with `--force` to add anyway","Verify the URL scheme: use https with a token or ssh with configured keys"],"exampleFix":"// before\ngrok plugin marketplace add git@git.internal.corp:plugins/core.git\n// after (host only reachable on VPN)\ngrok plugin marketplace add --force git@git.internal.corp:plugins/core.git","handlingStrategy":"fallback","validationCode":"// pre-check reachability before invoking marketplace add\nlet probe = std::process::Command::new(\"git\")\n    .args([\"ls-remote\", git_url])\n    .status()\n    .map(|s| s.success())\n    .unwrap_or(false);\nif !probe { eprintln!(\"{git_url} unreachable; use --force if VPN-only\"); }","typeGuard":null,"tryCatchPattern":"match marketplace_add_result {\n    Err(e) if e.to_string().contains(\"reachable git repository\") => {\n        eprintln!(\"remote unreachable; fix network/SSH or re-run with --force\");\n    }\n    other => other?,\n}","preventionTips":["Verify `git ls-remote <url>` succeeds before adding a source","Connect VPN before adding corporate git hosts","Configure SSH keys/credential helpers for private remotes"],"tags":["git","network","marketplace"],"backgroundTag":"unreachable-git-remote","analyzedSha":"bc7f02eddd3d84085849dc19ed216f11c23b0571","analyzedAt":"2026-08-31T04:59:42.031Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}