fix(github-auth): check ~/.hermes/.env before ~/.git-credentials for token extraction (#3466)
* fix(github-auth): check ~/.hermes/.env before ~/.git-credentials for token extraction Users who configured their token via `hermes setup` have it stored in ~/.hermes/.env (GITHUB_TOKEN=...), not in ~/.git-credentials. On macOS with osxkeychain as the default git credential helper, ~/.git-credentials may not exist at all, causing silent 401 failures in all GitHub skills. Add ~/.hermes/.env as the first fallback in the auth detection block and the inline "Extracting the Token from Git Credentials" example. Priority order: env var → ~/.hermes/.env → ~/.git-credentials → none Part of fix for NousResearch/hermes-agent#3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464 * fix(github-auth): check ~/.hermes/.env before ~/.git-credentials Fixes #3464
This commit is contained in:
@@ -219,6 +219,9 @@ if command -v gh &>/dev/null && gh auth status &>/dev/null; then
|
|||||||
echo "AUTH_METHOD=gh"
|
echo "AUTH_METHOD=gh"
|
||||||
elif [ -n "$GITHUB_TOKEN" ]; then
|
elif [ -n "$GITHUB_TOKEN" ]; then
|
||||||
echo "AUTH_METHOD=curl"
|
echo "AUTH_METHOD=curl"
|
||||||
|
elif [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
|
||||||
|
export GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
echo "AUTH_METHOD=curl"
|
||||||
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
||||||
export GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
export GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
echo "AUTH_METHOD=curl"
|
echo "AUTH_METHOD=curl"
|
||||||
|
|||||||
@@ -23,6 +23,11 @@ if command -v gh &>/dev/null && gh auth status &>/dev/null 2>&1; then
|
|||||||
GH_USER=$(gh api user --jq '.login' 2>/dev/null)
|
GH_USER=$(gh api user --jq '.login' 2>/dev/null)
|
||||||
elif [ -n "$GITHUB_TOKEN" ]; then
|
elif [ -n "$GITHUB_TOKEN" ]; then
|
||||||
GH_AUTH_METHOD="curl"
|
GH_AUTH_METHOD="curl"
|
||||||
|
elif [ -f "$HOME/.hermes/.env" ] && grep -q "^GITHUB_TOKEN=" "$HOME/.hermes/.env" 2>/dev/null; then
|
||||||
|
GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" "$HOME/.hermes/.env" | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
if [ -n "$GITHUB_TOKEN" ]; then
|
||||||
|
GH_AUTH_METHOD="curl"
|
||||||
|
fi
|
||||||
elif [ -f "$HOME/.git-credentials" ] && grep -q "github.com" "$HOME/.git-credentials" 2>/dev/null; then
|
elif [ -f "$HOME/.git-credentials" ] && grep -q "github.com" "$HOME/.git-credentials" 2>/dev/null; then
|
||||||
GITHUB_TOKEN=$(grep "github.com" "$HOME/.git-credentials" | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
GITHUB_TOKEN=$(grep "github.com" "$HOME/.git-credentials" | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
if [ -n "$GITHUB_TOKEN" ]; then
|
if [ -n "$GITHUB_TOKEN" ]; then
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ if command -v gh &>/dev/null && gh auth status &>/dev/null; then
|
|||||||
else
|
else
|
||||||
AUTH="git"
|
AUTH="git"
|
||||||
if [ -z "$GITHUB_TOKEN" ]; then
|
if [ -z "$GITHUB_TOKEN" ]; then
|
||||||
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
if [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
|
||||||
|
GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
||||||
|
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ if command -v gh &>/dev/null && gh auth status &>/dev/null; then
|
|||||||
else
|
else
|
||||||
AUTH="git"
|
AUTH="git"
|
||||||
if [ -z "$GITHUB_TOKEN" ]; then
|
if [ -z "$GITHUB_TOKEN" ]; then
|
||||||
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
if [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
|
||||||
|
GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
||||||
|
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,11 @@ else
|
|||||||
AUTH="git"
|
AUTH="git"
|
||||||
# Ensure we have a token for API calls
|
# Ensure we have a token for API calls
|
||||||
if [ -z "$GITHUB_TOKEN" ]; then
|
if [ -z "$GITHUB_TOKEN" ]; then
|
||||||
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
if [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
|
||||||
|
GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
||||||
|
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo "Using: $AUTH"
|
echo "Using: $AUTH"
|
||||||
|
|||||||
@@ -26,7 +26,11 @@ if command -v gh &>/dev/null && gh auth status &>/dev/null; then
|
|||||||
else
|
else
|
||||||
AUTH="git"
|
AUTH="git"
|
||||||
if [ -z "$GITHUB_TOKEN" ]; then
|
if [ -z "$GITHUB_TOKEN" ]; then
|
||||||
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
if [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
|
||||||
|
GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
|
||||||
|
elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
|
||||||
|
GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user