Skip to content
Skillpedia
Deploy & cloud (DevOps)40k · #5164

gh-attach

Lets your agent attach local files to GitHub. It can upload images, PDFs, or videos to issues, PRs, or comments.

What it does

This tool helps you upload files (like images or documents) to GitHub and use them in discussions, such as bug reports or code review requests. It also allows you to download files that have been uploaded to GitHub.

When to use it

  • ✓When you need to add an image to a bug report.
  • ✓To include a file in a code change request.
  • ✓When you want to download a file someone shared on GitHub.

Example of what to ask your AI

“Attach this screenshot to my bug report.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/github/awesome-copilot/blob/main/skills/gh-attach/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/github/awesome-copilot/blob/main/skills/gh-attach/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

Behind the scenes, the tool uses a special GitHub command to send your file. It then gives you a link that GitHub automatically understands and displays. To download, it uses the same link and your GitHub login to fetch the file.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add github/awesome-copilot --skill gh-attach

Or download just the file:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/gh-attach/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

gh-attach

gh attach uploads a file to GitHub's internal user-attachments endpoint (no public API exists) and prints the URL, which GitHub auto-renders (image/video/file) wherever it's pasted. The URL inherits the repo's visibility, so private-repo uploads stay private.

Prerequisites

gh extension list | grep -q 'gh attach' || gh extension install sudosubin/gh-attach

Uploads use a GitHub browser session cookie, not the gh token. By default, gh must be authenticated so gh-attach can select the matching browser account. If the wrong account is selected, add --browser <name> --profile <name>. For headless use, set GH_ATTACH_SESSION_TOKEN to the bare user_session cookie value. Treat it as a full account credential.

Steps

1. Upload: Use an absolute quoted path. -R is optional inside a repository. For GHES, use -R host/owner/repo. The command prints the URL on one line. GitHub auto-renders it (image/video/file), so use it as-is:

URL=$(gh attach "$FILE" -R <owner>/<repo>)

2. Embed (always --body-file -, e.g. gh pr comment/edit, gh issue comment/edit):

printf '## Screenshots\n\n%s\n' "$URL" | gh pr comment <pr> -R <owner>/<repo> --body-file -

3. Download: Specify the destination explicitly. Private attachments use the active gh token, with browser cookies as an authorization fallback:

gh attach download "$URL" -O "$FILE"

Notes

  • Private repo: URL renders only for authorized viewers. An anonymous fetch is expected to return 404 or 403.
  • Sizing: embed <img width="800" src="$URL"> instead of the bare URL.
  • GitHub Cloud and GHES decide which file extensions and content types they accept.
FAQ

What happens if the file is from a private repository?

If the file is uploaded to a private project, only people with permission to view that project will be able to see the file via the link.

Can I change the image size when I put it in a discussion?

Yes, you can specify the image size using simple HTML code, like `<img width="800" src="FILE_URL">`.

What types of files can I upload?

GitHub decides which file types and content types they accept. Generally, images, PDFs, videos, and zip files are supported.

Details

Original description by the author

Uploads a local file (screenshot, image, PDF, zip, video) to GitHub user-attachments, downloads GitHub user-attachments, and embeds local files in a PR, issue, or comment. Use when asked to "attach a screenshot to the PR", "add an image to the issue", "embed before/after screenshots", "attach this file", or "download this GitHub attachment". Powered by `gh-attach`.

repo: github/awesome-copilot

Popularity

GitHub stars
40k
Ranking position
#5164
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills