Skip to content
A command line interface for 1Password
Branch: master
Clone or download
AdamIsrael Merge pull request #34 from AdamIsrael/pycrypto
Replace M2Crypt with pycrypto.
Add Python3 compatibility.
Latest commit 9cc6823 Jun 16, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Last resort error handling. Nov 7, 2013
onepassword Fix performance issue unlocking keychain Apr 17, 2017
tests Fix performance issue unlocking keychain Apr 17, 2017
.gitignore Ignore the build directory. Nov 5, 2013
CHANGES.txt
LICENSE Add README and LICENSE. Feb 17, 2013
Makefile Sign release tags Nov 7, 2013
README.txt Fix segmentation fault in pbkdf2 by switching to M2Crypto Jul 10, 2014
requirements_dev.txt Replace M2Crypt with pycrypto Mar 17, 2017
setup.py Replace M2Crypt with pycrypto Mar 17, 2017

README.txt

=====
1pass
=====

A command line interface (and Python library) for reading passwords from
`1Password <https://agilebits.com/onepassword>`_.

Command line usage
==================

To get a password::

    1pass mail.google.com

By default this will look in ``~/Dropbox/1Password.agilekeychain``. If that's
not where you keep your keychain::

    1pass --path ~/whatever/1Password.agilekeychain mail.google.com

Or, you can set your keychain path as an enviornment variable::

    export ONEPASSWORD_KEYCHAIN=/path/to/keychain

    1pass mail.google.com

By default, the name you pass on the command line must match the name of an
item in your 1Password keychain exactly. To avoid this, fuzzy matching is
made possible with the ``--fuzzy`` flag::

    1pass --fuzzy mail.goog

If you don't want to be prompted for your password, you can use the
``--no-prompt`` flag and provide the password via standard input instead::

    emit_master_password | 1pass --no-prompt mail.google.com

Python usage
============

The interface is very simple::

    from onepassword import Keychain

    my_keychain = Keychain(path="~/Dropbox/1Password.agilekeychain")
    my_keychain.unlock("my-master-password")
    my_keychain.item("An item's name").password

An example of real-world use
============================

I wrote this so I could add the following line to my ``.muttrc`` file::

    set imap_pass = "`1pass 'Google: personal'`"

Now, whenever I start ``mutt``, I am prompted for my 1Password Master Password
and not my Gmail password.

The ``--no-prompt`` flag is very useful when configuring ``mutt`` and PGP.
``mutt`` passes the PGP passphrase via standard in, so by inserting ``1pass``
into this pipline I can use my 1Password master password when prompted for my
PGP keyphrase::

    set pgp_decrypt_command="1pass --no-prompt pgp-passphrase | gpg --passphrase-fd 0 ..."

Contributors
============

* Pip Taylor <https://github.com/pipt>
* Adam Coddington <https://github.com/latestrevision>
* Ash Berlin <https://github.com/ashb>
* Zach Allaun <https://github.com/zachallaun>
* Eric Mika <https://github.com/kitschpatrol>

License
=======

*1pass* is licensed under the MIT license. See the license file for details.

While it is designed to read ``.agilekeychain`` bundles created by 1Password,
*1pass* isn't officially sanctioned or supported by
`AgileBits <https://agilebits.com/>`_. I do hope they like it though.
You can’t perform that action at this time.