Is Shepherd: Focus & Productivity Time Tracker safe?
Shepherd records page content and sessions on every site and sends them to Composite's servers.
On all websites, the extension runs the Composite SDK, which records the page's DOM, network activity and console output, and passes it through the background worker to Composite's ingestion API. Input fields are not masked by default. It also sends the URL and title of each tracked tab to a Cloudflare worker to score productivity.
Who publishes itShepherd - 1 other listing from the same operator, none carrying a finding
Shepherd - 1 other listing from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 35 users between them, none of them carrying a finding.
Shared hosts - 1 hostname
Hostnames hardcoded in this extension that few other listings call. That can mean one operator behind both, and it can equally mean a small shared vendor, so it is context rather than a conclusion. Hosts that many listings call are left out: they are services, not connections.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Composite SDK records page DOM and network activity on every site you visit
Code analysis shows a content script on all pages starts rrweb session recording and sends it to prod.alb.us.api.composite.com.
Input masking is off unless server config sets it.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Static analysis
You open any ordinary web page.
The content script is declared for all URLs.
The extension starts recording the page's DOM, network calls and console output.
Records are batched and sent to the vendor's ingest host.
SDK initialisation with recording options
await Te.init({ apiKey: pa, apiHost: fa, transport: "chrome-extension", autocapture: { capture_pageview: !0 }, sessionRecording: { networkCapture: !0, enableRecordingConsoleLog: !0, compress: !0 }, loaded: e => {}})rrweb recorder options
Recorder start
content.jslet e = { emit: this.onRRwebEmit.bind(this), maskAllInputs: this.options.maskAllInputs ?? !1, maskTextSelector: this.options.maskSelector, blockSelector: this.options.blockSelector, inlineStylesheet: this.options.inlineStylesheet ?? !0, collectFonts: this.options.collectFonts ?? !0, sampling: this.options.sampling ?? { mousemove: !0, mouseInteraction: !0, scroll: 150, media: 800, input: "last" }};this.stopRecording = Ue(e)- Page URLhttps://mail.example.com/inbox
Shows which pages you visit.
- Page contentrrweb full snapshot (type 2)
A snapshot of what is on screen, including text you see.
- Form inputmaskAllInputs: false
Typed values are not masked unless server config says so.
- Network callsnetworkCapture: true
Requests the page makes are logged alongside the recording.
- prod.alb.us.api.composite.com
Receives /ingest/configuration, /ingest/e, /ingest/batch and gzip /ingest/s with a Bearer key.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
What it can do
Permissions this extension asks for, as declared in version 0.0.7. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on every site you visit
<all_urls>
See the address and title of every tab you have open
tabs
Store data in your browser
storage
Show a panel beside the page
sidePanel
Run its own code inside the pages you visit
scripting
Detect when you step away from your computer
idle
Where it sends data
Destinations our analysis observed Shepherd: Focus & Productivity Time Tracker contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- prod.alb.us.api.composite.com
Shepherd: Focus & Productivity Time Tracker sends data to prod.alb.us.api.composite.com. No other extension we have analysed sends data here.
- url-classifier.composite.workers.dev
Shepherd: Focus & Productivity Time Tracker sends data to url-classifier.composite.workers.dev. No other extension we have analysed sends data here.