Skip to content

Commit 36116ad

Browse files
committed
fix: surface GitHub permission errors
Return GitHub API error details on repo permission checks so chat responses explain 404/permission issues instead of silently failing.
1 parent 2cd0c4e commit 36116ad

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

github_client.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,8 +388,16 @@ def get_repo_permissions(self, access_token: str, repo_full_name: str) -> Option
388388
repo = response.json()
389389
return repo.get("permissions", {})
390390
else:
391-
print(f"⚠️ Could not fetch repo permissions: {response.status_code}")
392-
return None
391+
error_msg = None
392+
try:
393+
error_msg = response.json().get("message")
394+
except Exception:
395+
error_msg = response.text
396+
print(f"⚠️ Could not fetch repo permissions: {response.status_code} - {error_msg}")
397+
return {
398+
"_error": error_msg or "Unknown error",
399+
"_status": response.status_code
400+
}
393401

394402
except Exception as e:
395403
print(f"⚠️ Error fetching repo permissions: {e}")

main.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,11 @@ async def check_repo_access(
12781278
permissions = github_client.get_repo_permissions(user["access_token"], repo_full_name)
12791279
if not permissions:
12801280
return {"success": False, "error": "Could not fetch repo permissions"}
1281+
if permissions.get("_error"):
1282+
return {
1283+
"success": False,
1284+
"error": f"GitHub permissions check failed ({permissions.get('_status')}): {permissions.get('_error')}"
1285+
}
12811286

12821287
if permissions.get("admin"):
12831288
level = "admin"
@@ -1513,7 +1518,15 @@ async def tool_code_feature(request: Request):
15131518
)
15141519

15151520
permissions = github_client.get_repo_permissions(user["access_token"], repo_full_name)
1516-
if not permissions or not (permissions.get("push") or permissions.get("admin")):
1521+
if not permissions:
1522+
return ChatToolResponse(
1523+
error="Could not fetch repo permissions. Please re-authenticate GitHub."
1524+
)
1525+
if permissions.get("_error"):
1526+
return ChatToolResponse(
1527+
error=f"GitHub permissions check failed ({permissions.get('_status')}): {permissions.get('_error')}"
1528+
)
1529+
if not (permissions.get("push") or permissions.get("admin")):
15171530
return ChatToolResponse(
15181531
error=(
15191532
"Your GitHub token does not have write access to this repo. "

0 commit comments

Comments
 (0)