{"repo":"atani/gh-attach","free":true,"listed":false,"github":"https://github.com/atani/gh-attach","clone":"git clone https://github.com/atani/gh-attach.git","description":"Upload images to GitHub & GHE issue/PR comments from the CLI and get the real user-attachments/assets URL. Works as a gh extension.","language":"Shell","stars":20,"topics":["automation","cli","gh-extension","ghe","github","github-enterprise","image-upload","playwright","shell"],"license":"MIT","category":"cli-tools","readme_excerpt":"gh-attach Upload images to GitHub Issue/PR comments (or just get back the asset URL). Works on GitHub.com and GitHub Enterprise Server (React-based issue pages). Why this exists GitHub does not expose a public API for uploading images as user-attachments/assets/ — the format you get from drag-and-drop in the web UI. gh api alone cannot do it. gh-attach drives a real browser via playwright-cli so you get the exact same URL format that a human would. The common pain points gh-attach solves: - SSO / SAML re-auth every few minutes. With --session NAME --keep-session , gh-attach reuses a persistent playwright-cli session. One interactive login in the morning, rest of the day is free. - GHE React pages. Modern GHE replaces the classic file-attachment custom element with a React implementation. gh-attach's Browser mode reads the upload URL from textarea.value so it works on both classic and React-based pages. - Scriptable URL-only mode. --url-only prints the uploaded asset URLs to stdout (one per line) and skips comment creation entirely, so you can pipe them into gh pr review --comment --body-file or any other flow. Install gh extension (recommended) Homebrew Manual Requirements - gh CLI authenticated ( gh auth login ) - playwright-cli for Browser and Direct modes - jq for Direct mode Quick start GitHub.com First run opens a browser window; log in to GitHub, then the session is reused. GitHub Enterprise behind SAML (the main use case) Once per laptop, log in through a named persist","default_branch":null,"files":null,"tree":[],"storefront":"/r/atani","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/atani/gh-attach/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}