The gist gem provides a gist-paste command that you can use from your terminal to upload content to



If you have ruby installed:

gem install gist


If you\'re using Bundler:

source :rubygems gem \'gist\'


For OS X, gist lives in Homebrew

brew install gist



To upload the contents of a.rb just:

gist-paste a.rb


Upload multiple files:

gist-paste a b c gist-paste *.rb


By default it reads from STDIN, and you can set a filename with -f.

gist-paste -f test.rb <a.rb


Alternatively, you can just paste from the clipboard:

gist-paste -P


Use -p to make the gist private:

gist-paste -p a.rb


Use -d to add a description:

gist-paste -d "Random rbx bug" a.rb


You can update existing gists with -u:

gist-paste lib/gist.rb bin/gist-paste -u 42f2c239d2eb57299408


If you\'d like to copy the resulting URL to your clipboard, use -c.

gist-paste -c <a.rb


If you\'d like to copy the resulting embeddable URL to your clipboard, use -e.

gist-paste -e <a.rb


And you can just ask gist to open a browser window directly with -o.

gist-paste -o <a.rb


To list (public gists or all gists for authed user) gists for user

gist-paste -l : all gists for authed user gist-paste -l defunkt : list defunkt\'s public gists


See gist-paste --help for more detail.


If you want to associate your gists with your GitHub account, you need to login with gist-paste. It doesn\'t store your username and password, it just uses them to get an OAuth2 token (with the "gist" permission).

  • gist-paste --login
    Obtaining OAuth2 access_token from github.
    GitHub username: ConradIrwin
    GitHub password:
    2-factor auth code:

You can read the 2-factor auth code from an sms or the authentification app, depending on how you set your account up

Note: 2-factor authentication just appeared recently, so if you run into errors, update the gist gem.

  • gem update gist

This token is stored in ~/.gist and used for all future gisting. If you need to you can revoke it from, or just delete the file. If you need to store tokens for both and a Github Enterprise instance you can save your Github Enterprise token in ~/ where "" is the URL for your Github Enterprise instance.


After you\'ve done this, you can still upload gists anonymously with -a.

gist-paste -a a.rb

You can also use Gist as a library from inside your ruby code:

  • Gist.gist(" => \'awesome\').code")

If you need more advanced features you can also pass:


:access_token to authenticate using OAuth2 (default is `"~/.gist")).


:filename to change the syntax highlighting (default is a.rb).


:public if you want your gist to have a guessable url.


:description to add a description to your gist.


:update to update an existing gist (can be a URL or an id).


:anonymous to submit an anonymous gist (default is false).


:copy to copy the resulting URL to the clipboard (default is false).


:open to open the resulting URL in a browser (default is false).

NOTE: The access_token must have the "gist" scope.


If you want to upload multiple files in the same gist, you can:

Gist.multi_gist("a.rb" => "", "" => "")


If you\'d rather use gist\'s builtin access_token, then you can force the user to obtain one by calling:



This will take them through the process of obtaining an OAuth2 token, and storing it in ~/.gist, where it can later be read by Gist.gist

GitHub enterprise


If you\'d like gist-paste to use your locally installed GitHub Enterprise, you need to export the GITHUB_URL environment variable in your ~/.bashrc.

export GITHUB_URL=


Once you\'ve done this and restarted your terminal (or run source ~/.bashrc), gist-paste will automatically use github enterprise instead of the public



If you\'d like -o or -c to be the default when you use the gist-paste executable, add an alias to your ~/.bashrc (or equivalent). For example:

alias gist-paste=\'gist-paste -c\'


If you\'d prefer gist-paste to open a different browser, then you can export the BROWSER environment variable:

export BROWSER=google-chrome

If clipboard or browser integration don\'t work on your platform, please file a bug or (more ideally) a pull request.

If you need to use an HTTP proxy to access the internet, export the HTTP_PROXY or http_proxy environment variable and gist-paste will use it.


Thanks to @defunkt and @indirect for writing and maintaining versions 1 through 3. Thanks to @rking and @ConradIrwin for maintaining version 4.

Licensed under the MIT license. Bug-reports, and pull requests are welcome.