github Python re-analysis due

15273/devscope-bridge

github

Local colleague for Claude Code: Chrome side panel now, autonomous assistant and developer on your machine. Loopback only — no cloud.

maintainer
15273
license
MIT
first seen
2026-08-19
last seen
2026-09-04
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 62 tools
transport stdio · http counts 62 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • browser_assert_text
  • browser_click
  • browser_evaluate
  • browser_fill
  • browser_focus_tab
  • browser_get_console
  • browser_get_elements
  • browser_get_network
  • browser_get_page_info
  • browser_highlight
  • browser_hover
  • browser_key_press
  • browser_list_tabs
  • browser_navigate
  • browser_new_page
  • browser_screenshot
  • browser_scroll_to
  • browser_select_option
  • browser_snapshot
  • browser_upload_file
  • browser_wait_for_navigation
  • browser_wait_for_selector
  • cal_create_event
  • cal_find_free_slots
  • cal_get_event
  • cal_list_events
  • cal_validate_event_draft
  • devscope_capabilities
  • devscope_invoke
  • gm_get_thread
  • gm_list_labels
  • gm_search_threads
  • linkedin_fill_comment
  • linkedin_fill_composer
  • linkedin_read_search_state
  • linkedin_scrape_feed
  • linkedin_scrape_people_search
  • linkedin_scrape_profile
  • meta_get_insights
  • meta_list_accounts
  • meta_list_alerts
  • meta_list_campaigns
  • meta_update_campaign_budget
  • meta_update_campaign_status
  • schedule_list
  • schedule_playbook_update
  • schedule_setup_set_instruction
  • schedule_setup_update
  • task_ask_user
  • task_create
  • task_list
  • task_log
  • task_request_approval
  • task_save_mom_report
  • task_update
  • wa_ask
  • wa_get_messages
  • wa_list_chats
  • wa_mark_read
  • wa_nudges
  • wa_search
  • wa_send
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 5cddb30 · analyzer v33 · 1w ago

skills & prompt files 4

danger signals2

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 445

filesystem 52

  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/agents_scanner.py :11 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/board_state.py :13 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/bridge_auth.py :9 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :22 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/builtin_commands.py :25 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/calendar/authorize_calendar.py :15 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/calendar/calendar_service.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :12 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/capabilities.py :5 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/commands_scanner.py :6 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/compact_service.py :21 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/cursor_workspace.py :6 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/devscope_mcp_server.py :13 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/employee_config.py :14 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/fs_routes.py :13 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/gmail/authorize_gmail.py :19 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/gmail/gmail_service.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/gmail_mcp_server.py :12 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/local_env.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/main.py :22 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/authorize_meta_ads.py :15 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/cockpit_store.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/meta_ads_poller.py :8 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/meta_ads_service.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/models_rest.py :70 or more Task tool_use blocks are still open (i.e. sub-agents are in
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/orchestrator_config.py :9 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/plugin_store.py :26 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/recording_transcode.py :5 import shutil
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/schedule_setup.py :8 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/session_http.py :9 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/session_hygiene.py :17 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/session_manager_cursor.py :36 import shutil
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/session_store.py :15 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/setup_mcp.py :15 import shutil
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :12 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/task_store.py :17 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/conftest.py :9 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_agents_scanner.py :3 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_compact_service.py :21 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_cursor_workspace.py :3 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_new_slash_commands.py :29 from pathlib import Path
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_recording_transcode.py :26 with open(out_path, "wb") as f:
  • fs (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_session_store_backwards_compatible.py :10 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/usage_audit.py :15 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/watchdog_medic.py :28 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_config.py :9 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_poller.py :12 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_routes.py :7 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_store.py :10 from pathlib import Path
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/nudge_engine.py :3 A chat is open (the user forgot to reply) when its last message is not from the
  • fs 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :12 from pathlib import Path

shell / exec 7

  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/background_cursor_task.py :14 import subprocess
  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/plugin_store.py :24 import subprocess
  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/recording_transcode.py :6 import subprocess
  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/session_manager_cursor.py :38 import subprocess
  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/setup_mcp.py :16 import subprocess
  • shell (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_liveness_fields.py :57 Claude) and a subprocess.Popen (poll() method, for Cursor)."""
  • shell 15273-devscope-bridge-5cddb30/devscope_bridge/usage_audit.py :13 import subprocess

network 19

  • net 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :25 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :15 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/devscope_mcp_server.py :16 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/gmail_mcp_server.py :15 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/authorize_meta_ads.py :16 from urllib.parse import parse_qs, urlparse
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/meta_ads_service.py :10 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :10 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/oauth_usage_service.py :21 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/plugin_store.py :28 import httpx
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/schedule_discover.py :10 from urllib.parse import urlparse
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :15 import httpx
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_actions_endpoint_resolves_on_browser_result.py :15 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_actions_endpoint_returns_503_when_no_ws.py :6 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_browser_action_deadline.py :29 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_get_sessions_includes_agent_cwd.py :9 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_liveness_fields.py :26 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_pending_recovery.py :16 from httpx import AsyncClient, ASGITransport
  • net (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_post_sessions_creates_metadata.py :15 from httpx import AsyncClient, ASGITransport
  • net 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :15 import httpx

secrets 5

  • secrets 15273-devscope-bridge-5cddb30/devscope_bridge/calendar/authorize_calendar.py :26 client_secret = os.environ.get("GOOGLE_CLIENT_SECRET", "").strip()
  • secrets 15273-devscope-bridge-5cddb30/devscope_bridge/gmail/authorize_gmail.py :27 client_secret = os.environ.get("GOOGLE_CLIENT_SECRET", "").strip()
  • secrets 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/authorize_meta_ads.py :33 os.environ.get("FACEBOOK_APP_SECRET")
  • secrets 15273-devscope-bridge-5cddb30/devscope_bridge/session_manager_cursor.py :262 if os.environ.get("DEVSCOPE_USE_API_KEY") != "1":
  • secrets 15273-devscope-bridge-5cddb30/devscope_bridge/session_runtime.py :143 if os.environ.get("DEVSCOPE_USE_API_KEY") != "1":

database 8

  • db 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads/cockpit_store.py :5 import sqlite3
  • db 15273-devscope-bridge-5cddb30/devscope_bridge/session_hygiene.py :16 import sqlite3
  • db 15273-devscope-bridge-5cddb30/devscope_bridge/task_store.py :13 import sqlite3
  • db (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_cockpit_sync.py :5 import sqlite3
  • db (weak) 15273-devscope-bridge-5cddb30/devscope_bridge/tests/test_task_store.py :2 import sqlite3
  • db 15273-devscope-bridge-5cddb30/devscope_bridge/usage_audit.py :12 import sqlite3
  • db 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_store.py :8 import sqlite3
  • db 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp/cockpit_sync.py :6 import sqlite3

tool registrations 62

  • browser_navigate 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :178
  • browser_screenshot 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :184
  • browser_get_page_info 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :197
  • browser_list_tabs 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :203
  • browser_focus_tab 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :215
  • browser_new_page 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :221
  • browser_click 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :237
  • browser_fill 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :252
  • browser_get_elements 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :268
  • browser_evaluate 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :281
  • browser_snapshot 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :290
  • browser_get_network 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :296
  • browser_get_console 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :302
  • browser_highlight 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :312
  • browser_wait_for_selector 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :329
  • browser_wait_for_navigation 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :343
  • browser_assert_text 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :356
  • browser_scroll_to 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :372
  • browser_select_option 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :378
  • browser_hover 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :391
  • browser_key_press 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :397
  • browser_upload_file 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :414
  • linkedin_scrape_feed 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :459
  • linkedin_fill_composer 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :468
  • linkedin_fill_comment 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :482
  • linkedin_scrape_people_search 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :496
  • linkedin_read_search_state 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :510
  • linkedin_scrape_profile 15273-devscope-bridge-5cddb30/devscope_bridge/browser_mcp_server.py :519
  • cal_list_events 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :81
  • cal_get_event 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :96
  • cal_find_free_slots 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :102
  • cal_validate_event_draft 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :120
  • cal_create_event 15273-devscope-bridge-5cddb30/devscope_bridge/calendar_mcp_server.py :143
  • devscope_invoke 15273-devscope-bridge-5cddb30/devscope_bridge/devscope_mcp_server.py :82
  • devscope_capabilities 15273-devscope-bridge-5cddb30/devscope_bridge/devscope_mcp_server.py :97
  • gm_search_threads 15273-devscope-bridge-5cddb30/devscope_bridge/gmail_mcp_server.py :77
  • gm_get_thread 15273-devscope-bridge-5cddb30/devscope_bridge/gmail_mcp_server.py :89
  • gm_list_labels 15273-devscope-bridge-5cddb30/devscope_bridge/gmail_mcp_server.py :95
  • meta_list_accounts 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :68
  • meta_list_campaigns 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :74
  • meta_get_insights 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :86
  • meta_update_campaign_status 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :98
  • meta_update_campaign_budget 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :112
  • meta_list_alerts 15273-devscope-bridge-5cddb30/devscope_bridge/meta_ads_mcp_server.py :126
  • task_list 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :80
  • task_create 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :90
  • task_update 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :101
  • task_request_approval 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :114
  • task_ask_user 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :122
  • task_log 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :133
  • task_save_mom_report 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :140
  • schedule_playbook_update 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :146
  • schedule_list 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :153
  • schedule_setup_update 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :159
  • schedule_setup_set_instruction 15273-devscope-bridge-5cddb30/devscope_bridge/task_mcp_server.py :166
  • wa_list_chats 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :103
  • wa_get_messages 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :115
  • wa_search 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :121
  • wa_nudges 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :127
  • wa_send 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :133
  • wa_mark_read 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :143
  • wa_ask 15273-devscope-bridge-5cddb30/devscope_bridge/whatsapp_mcp_server.py :149

declared dependencies 9

  • mcp@>=1.0,<2
  • fastapi@>=0.115
  • uvicorn@>=0.30
  • websockets@>=13.0
  • pydantic@>=2.0
  • httpx@>=0.27
  • google-api-python-client@>=2.100
  • google-auth@>=2.20
  • google-auth-oauthlib@>=1.0

cursor-plugin 1

  • opaque (low) 15273-devscope-bridge-5cddb30/.cursor/mcp.json bundled .cursor/ plugin descriptor (15273-devscope-bridge-5cddb30/.cursor/mcp.json) — presence-detected; review the descriptor