Created
December 11, 2025 14:55
-
-
Save Pobega/dfe338902439a16408a0c97d440fa3db to your computer and use it in GitHub Desktop.
Copilot Show Usage Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/bash | |
| TOKEN=$(cat ~/.config/github-copilot/apps.json | jq '.[].oauth_token' | sed 's/^"\(.*\)"$/\1/') | |
| JSON=$(curl -s -H "Authorization: Bearer $TOKEN" https://api.github.com/copilot_internal/user) | |
| data=$(echo $JSON | jq -r '.quota_snapshots.premium_interactions') | |
| entitlement=$(echo $data | jq -r '.entitlement') | |
| remaining=$(echo $data | jq -r '.remaining') | |
| percent=$(echo $data | jq -r '.percent_remaining') | |
| unlimited=$(echo $data | jq -r '.unlimited') | |
| overage_permitted=$(echo $data | jq -r '.overage_permitted') | |
| reset_date=$(echo $JSON | jq -r '.quota_reset_date') | |
| used=$(( entitlement - remaining )) | |
| status="Limited" | |
| if [ "$overage_permitted" = "true" ]; then | |
| overage="Permitted ✓" | |
| else | |
| overage="Not Permitted " | |
| fi | |
| used_percent=$(awk "BEGIN {print 100 - $percent}") | |
| # Usage bar | |
| filled=$(awk "BEGIN {print int($used_percent / 100 * 20)}") | |
| empty=$(( 20 - filled )) | |
| bar_usage="" | |
| if [ $filled -gt 0 ]; then bar_usage=$(printf '█%.0s' $(seq 1 $filled)); fi | |
| if [ $empty -gt 0 ]; then bar_usage="${bar_usage}$(printf '░%.0s' $(seq 1 $empty))"; fi | |
| # Days left | |
| days_left=$(( ($(date -d "$reset_date" +%s) - $(date +%s)) / 86400 + 1 )) | |
| # Time bar | |
| filled_time=$(( days_left / 4 )) | |
| if [ $filled_time -gt 20 ]; then filled_time=20; fi | |
| if [ $filled_time -lt 0 ]; then filled_time=0; fi | |
| empty_time=$(( 20 - filled_time )) | |
| bar_time="" | |
| if [ $filled_time -gt 0 ]; then bar_time=$(printf '█%.0s' $(seq 1 $filled_time)); fi | |
| if [ $empty_time -gt 0 ]; then bar_time="${bar_time}$(printf '░%.0s' $(seq 1 $empty_time))"; fi | |
| # Output | |
| echo "Premium Interactions" | |
| echo "- Used: $used / $entitlement" | |
| echo " $bar_usage ($(printf "%.1f" $used_percent)%)" | |
| echo "- Remaining: $remaining" | |
| echo "- Percentage: $percent%" | |
| echo "- Status: $status" | |
| echo "- Overage: $overage" | |
| echo "" | |
| echo "> Quota resets on: $reset_date" | |
| echo "> $bar_time ($days_left days left)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment