{"id":28212674,"url":"https://github.com/scaryrawr/gh-ado-codespaces","last_synced_at":"2026-02-18T04:03:33.618Z","repository":{"id":293163428,"uuid":"983137483","full_name":"scaryrawr/gh-ado-codespaces","owner":"scaryrawr","description":"An azure cli identity wrapper for use with GitHub Codespaces","archived":false,"fork":false,"pushed_at":"2026-02-14T04:07:25.000Z","size":5692,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-14T11:47:06.929Z","etag":null,"topics":["azure-devops","gh-extension","gh-extensions"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scaryrawr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-05-14T00:01:56.000Z","updated_at":"2026-02-14T04:03:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"5dc2d545-80d3-487e-8fbb-1a12c3274aa6","html_url":"https://github.com/scaryrawr/gh-ado-codespaces","commit_stats":null,"previous_names":["scaryrawr/gh-ado-codespaces"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/scaryrawr/gh-ado-codespaces","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaryrawr%2Fgh-ado-codespaces","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaryrawr%2Fgh-ado-codespaces/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaryrawr%2Fgh-ado-codespaces/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaryrawr%2Fgh-ado-codespaces/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scaryrawr","download_url":"https://codeload.github.com/scaryrawr/gh-ado-codespaces/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaryrawr%2Fgh-ado-codespaces/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29567616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-devops","gh-extension","gh-extensions"],"created_at":"2025-05-17T19:09:16.596Z","updated_at":"2026-02-18T04:03:33.613Z","avatar_url":"https://github.com/scaryrawr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-ado-codespaces\n\nA GitHub CLI extension that enables Azure DevOps (ADO) authentication with GitHub Codespaces via SSH connections, without requiring VS Code to be running. It also provides automatic port forwarding capabilities.\n\n## Overview\n\nWhen working with GitHub Codespaces and Azure DevOps services, authentication can be challenging, especially when connecting via SSH rather than through VS Code. This extension bridges that gap by:\n\n1. Securely forwarding your local Azure CLI credentials to your codespace\n2. Automatically detecting and forwarding application ports from your codespace to your local machine\n3. Enabling browser opening from your codespace to your local browser\n4. Providing command completion notifications to your local desktop\n5. Providing a seamless development experience with GitHub Codespaces and Azure DevOps\n\n## Requirements\n\n- [GitHub CLI](https://cli.github.com/) (`gh`) installed and authenticated\n- [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) (`az`) installed and logged in to the appropriate tenant\n- A GitHub Codespace with [Artifacts Helper](https://github.com/microsoft/codespace-features/tree/main/src/artifacts-helper) configured\n\n## Installation\n\n```fish\ngh extension install scaryrawr/gh-ado-codespaces\n```\n\n## Usage\n\nBefore using the extension, make sure you're logged into Azure CLI with the appropriate scope:\n\n```fish\naz login --scope 499b84ac-1321-427f-aa17-267ca6975798/.default\n```\n\nThen, start a new session with your codespace:\n\n```fish\ngh ado-codespaces\n```\n\nThe extension will:\n\n1. Start a local authentication service\n2. Prompt you to select a GitHub Codespace (if not specified)\n3. Establish a secure port forwarding channel for authentication\n4. Start an interactive SSH session\n5. Automatically forward detected application ports from your codespace\n\n### Command Line Options\n\n```\nUsage:\n  gh ado-codespaces [flags] [-- ssh-flags...]\n\nFlags:\n  --codespace, -c string     Name of the codespace\n  --config                   Write OpenSSH configuration to stdout\n  --debug, -d                Log debug data to a file\n  --debug-file string        Path of the file to log to\n  --azure-subscription-id string  Azure subscription ID to use for authentication (persisted per GitHub account)\n  --profile string           Name of the SSH profile to use\n  --repo, -R string          Filter codespace selection by repository name (user/repo)\n  --repo-owner string        Filter codespace selection by repository owner (username or org)\n  --server-port int          SSH server port number (0 =\u003e pick unused)\n```\n\nYou can also pass additional SSH flags after `--`, for example:\n\n```fish\ngh ado-codespaces -- -L 3000:localhost:3000\n```\n\n### Configuration\n\nThe extension can read optional configuration values that are scoped per GitHub login. By default it looks for a JSON file at:\n\n```text\n$OS_CONFIG_DIR/gh-ado-codespaces/config.json\n```\n\nSet the `GH_ADO_CODESPACES_CONFIG` environment variable to point at a different file if you prefer a custom location.\n\nThe configuration file is a JSON object keyed by GitHub login IDs returned by `gh auth switch`. Each account can provide Azure-specific overrides, such as the subscription to use when acquiring tokens via the Azure CLI:\n\n```json\n{\n  \"login-id-1\": {},\n  \"login-id-2\": {\n    \"azure\": {\n      \"subscription\": \"00000000-0000-0000-0000-000000000000\"\n    }\n  }\n}\n```\n\nIf a subscription is set, the extension requests tokens from the Azure CLI using that subscription. When no override is present, the Azure CLI's default subscription continues to be used.\n\nYou can create or update this setting directly from the command line by supplying the `--azure-subscription-id` flag once. The value will be persisted for the active GitHub login so future invocations do not need the flag unless you want to change or clear it. To clear the stored value, edit the config file and remove (or empty) the `subscription` field for your login.\n\n## How It Works\n\n| Feature | Description |\n|---|---|\n| [Authentication](docs/authentication.md) | Forwards local Azure CLI credentials to your codespace for ADO access |\n| [Browser Opening](docs/browser-opening.md) | Opens URLs from your codespace in your local browser |\n| [Notifications](docs/notifications.md) | Desktop notifications when long-running commands finish |\n| [Port Forwarding](docs/port-forwarding.md) | Automatic bi-directional port forwarding (including local AI services) |\n\n## Testing\n\nRun all tests:\n```bash\ngo test -v ./...\n```\n\nSee [docs/testing.md](docs/testing.md) for the full test suite overview and additional commands.\n\n## Limitations\n\n- Authentication is tied to your local Azure CLI session\n- Initial setup with Artifacts Helper is required in the codespace\n\n## Acknowledgments\n\nThis project builds upon the work done in [ADO SSH Auth for GitHub Codespaces](https://github.com/scaryrawr/ado-ssh-auth), adapting it as a GitHub CLI extension with additional functionality.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscaryrawr%2Fgh-ado-codespaces","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscaryrawr%2Fgh-ado-codespaces","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscaryrawr%2Fgh-ado-codespaces/lists"}