What could go wrong giving full shell access to chatgpt?
Project description
Enable shell access on chatgpt.com
A custom gpt on chatgpt web app to interact with your local shell.
🚀 Highlights
- ⚡ Full Shell Access: No restrictions, complete control.
- ⚡ Create, Execute, Iterate: Ask the gpt to keep running compiler checks till all errors are fixed, or ask it to keep checking for the status of a long running command till it's done.
- ⚡ Interactive Command Handling: Supports interactive commands using arrow keys, interrupt, and ansi escape sequences.
- ⚡ REPL support: [beta] Supports python/node and other REPL execution.
🪜 Steps:
- Run the cli client in any directory of choice.
- Share the generated id with this GPT:
https://chatgpt.com/g/g-Us0AAXkRh-wcgw-giving-shell-access
- The custom GPT can now run any command on your cli
Client
You need to keep running this client for GPT to access your shell. Run it in a version controlled project's root.
Option 1: using uv [Recommended]
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ uv tool run --python 3.12 wcgw@latest
Option 2: using pip
Supports python >=3.10 and <3.13
$ pip3 install wcgw
$ wcgw
This will print a UUID that you need to share with the gpt.
Chat
Open the following link or search the "wcgw" custom gpt using "Explore GPTs" on chatgpt.com
https://chatgpt.com/g/g-Us0AAXkRh-wcgw-giving-shell-access
Finally, let the chatgpt know your user id in any format. E.g., "user_id=" followed by rest of your instructions.
NOTE: you can resume a broken connection
wcgw --client-uuid $previous_uuid
How it works
Your commands are relayed through a server to the terminal client. You could host the server on your own. For public convenience I've hosted one at https://wcgw.arcfu.com thanks to the gcloud free tier plan.
Chatgpt sends a request to the relay server using the user id that you share with it. The relay server holds a websocket with the terminal client against the user id and acts as a proxy to pass the request.
It's secure in both the directions. Either a malicious actor or a malicious Chatgpt has to correctly guess your UUID for any security breach.
Showcase
Unit tests and github actions
Create a todo app using react + typescript + vite
Privacy
The relay server doesn't store any data. I can't access any information passing through it and only secure channels are used to communicate.
You may host the server on your own and create a custom gpt using the following section.
Creating your own custom gpt and the relay server.
I've used the following instructions and action json schema to create the custom GPT. (Replace wcgw.arcfu.com with the address to your server)
https://github.com/rusiaaman/wcgw/blob/main/gpt_instructions.txt https://github.com/rusiaaman/wcgw/blob/main/gpt_action_json_schema.json
Run the server
gunicorn --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:443 src.wcgw.relay.serve:app --certfile fullchain.pem --keyfile privkey.pem
If you don't have public ip and domain name, you can use ngrok
or similar services to get a https address to the api.
The specify the server url in the wcgw
command like so
wcgw --server-url https://your-url/v1/register
[Optional] Local shell access with openai API key
Add OPENAI_API_KEY
and OPENAI_ORG_ID
env variables.
Clone the repo and run to install wcgw_local
command
pip install .
Then run
wcgw_local --limit 0.1
# Cost limit $0.1
You can now directly write messages or press enter key to open vim for multiline message and text pasting.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wcgw-1.0.1.tar.gz
.
File metadata
- Download URL: wcgw-1.0.1.tar.gz
- Upload date:
- Size: 199.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82dcb726a52c5fe54ff2e47f66c8507150b019154fbcd10feb17ad1d97807243 |
|
MD5 | b0287b84d5cd102577014f51ae27c46e |
|
BLAKE2b-256 | 797ccf9f2940fcc0e7b14ef08725e4b90b693e96e827846a0fb21aa25d35b614 |
File details
Details for the file wcgw-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: wcgw-1.0.1-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3157aac5bc614b44668cf879f2cc70b317410fa6a4d0938f89e6a2c3ef50b0a |
|
MD5 | 4b62af22dbca59f953e497bab5e2ad20 |
|
BLAKE2b-256 | 3b70793c84941095218700ff35381a3d814d3285618fdc9c75364b53b47ab7b3 |