René's URL Explorer Experiment


Title: feat: attach short-lived app-session token to Core integration calls (BUG-438) by arosenan · Pull Request #197 · base44/javascript-sdk · GitHub

Open Graph Title: feat: attach short-lived app-session token to Core integration calls (BUG-438) by arosenan · Pull Request #197 · base44/javascript-sdk

X Title: feat: attach short-lived app-session token to Core integration calls (BUG-438) by arosenan · Pull Request #197 · base44/javascript-sdk

Description: Why Public Base44 apps (public_without_login) expose Core integration endpoints to anonymous callers by design — the app's own browser frontend invokes InvokeLLM, SendEmail, etc. with no logged-in user. The flaw tracked in BUG-438 is that nothing distinguishes a request coming from the served app from an arbitrary curl against the public endpoint, so anyone can drain the owner's integration credits, send mail from the trusted sender domain, and so on. What The backend now mints a short-lived, app-bound session token (companion backend PR). This SDK change makes the client replay it: src/utils/app-session.ts — a lazily-caching session-token provider. On the first Core integration call it GETs /apps/{appId}/integration-session, caches the token until shortly before its TTL, and de-dupes concurrent refreshes. src/modules/integrations.ts — for Core.* calls, attaches the token via the X-Base44-App-Session header. Safety / rollout Best-effort & non-breaking: if minting fails, the provider returns null and the call proceeds without the header. Nothing breaks if the endpoint is unavailable. The backend runs in observe-only mode and only enforces the token once a per-app feature flag is enabled — so already-deployed apps bundling older SDK versions keep working while we measure the token-less traffic rate. Only Core calls are touched; installable/custom integrations and authenticated calls are unchanged (the header is additive and ignored for authenticated requests). Tests tests/unit/app-session.test.ts — header attached when minted, token minted once and reused, and the best-effort path (proceeds without the header when minting fails). Full unit suite green (156 passed). npm run build + npm run lint pass. 🤖 Generated with Claude Code

Open Graph Description: Why Public Base44 apps (public_without_login) expose Core integration endpoints to anonymous callers by design — the app's own browser frontend invokes InvokeLLM, SendEmail, etc. with no logged...

X Description: Why Public Base44 apps (public_without_login) expose Core integration endpoints to anonymous callers by design — the app's own browser frontend invokes InvokeLLM, SendEmail, etc. with no lo...

Opengraph URL: https://github.com/base44/javascript-sdk/pull/197

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:f8864372-c2e4-4783-93d0-9bf4de189d87
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA118:1EEE:762044:9AFD68:6A4C55EA
html-safe-nonced5ad300c906ea5c30c1219da0ed26efb3f0c3140ef81648cf0db1c9c55f9469a
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMTE4OjFFRUU6NzYyMDQ0OjlBRkQ2ODo2QTRDNTVFQSIsInZpc2l0b3JfaWQiOiI4MTk1OTE0ODEzNzM5MzkwNDQyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac0acc35752b3ee38c45e7056a69cfdbe808a498326c86fb22aea3c4e7dffdb120
hovercard-subject-tagpull_request:3846445548
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/base44/javascript-sdk/pull/197/files
twitter:imagehttps://avatars.githubusercontent.com/u/5755417?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/5755417?s=400&v=4
og:image:altWhy Public Base44 apps (public_without_login) expose Core integration endpoints to anonymous callers by design — the app's own browser frontend invokes InvokeLLM, SendEmail, etc. with no logged...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/base44/javascript-sdk git https://github.com/base44/javascript-sdk.git
octolytics-dimension-user_id234699998
octolytics-dimension-user_loginbase44
octolytics-dimension-repository_id939374418
octolytics-dimension-repository_nwobase44/javascript-sdk
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id939374418
octolytics-dimension-repository_network_root_nwobase44/javascript-sdk
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release14099438da5379150f15a2892474c7c7e6c0e55e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/base44/javascript-sdk/pull/197/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fbase44%2Fjavascript-sdk%2Fpull%2F197%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fbase44%2Fjavascript-sdk%2Fpull%2F197%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=base44%2Fjavascript-sdk
Reloadhttps://github.com/base44/javascript-sdk/pull/197/files
Reloadhttps://github.com/base44/javascript-sdk/pull/197/files
Reloadhttps://github.com/base44/javascript-sdk/pull/197/files
Please reload this pagehttps://github.com/base44/javascript-sdk/pull/197/files
base44 https://github.com/base44
javascript-sdkhttps://github.com/base44/javascript-sdk
Notifications https://github.com/login?return_to=%2Fbase44%2Fjavascript-sdk
Fork 9 https://github.com/login?return_to=%2Fbase44%2Fjavascript-sdk
Star 13 https://github.com/login?return_to=%2Fbase44%2Fjavascript-sdk
Code https://github.com/base44/javascript-sdk
Issues 6 https://github.com/base44/javascript-sdk/issues
Pull requests 41 https://github.com/base44/javascript-sdk/pulls
Discussions https://github.com/base44/javascript-sdk/discussions
Actions https://github.com/base44/javascript-sdk/actions
Projects https://github.com/base44/javascript-sdk/projects
Security and quality 0 https://github.com/base44/javascript-sdk/security
Insights https://github.com/base44/javascript-sdk/pulse
Code https://github.com/base44/javascript-sdk
Issues https://github.com/base44/javascript-sdk/issues
Pull requests https://github.com/base44/javascript-sdk/pulls
Discussions https://github.com/base44/javascript-sdk/discussions
Actions https://github.com/base44/javascript-sdk/actions
Projects https://github.com/base44/javascript-sdk/projects
Security and quality https://github.com/base44/javascript-sdk/security
Insights https://github.com/base44/javascript-sdk/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fbase44%2Fjavascript-sdk%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fbase44%2Fjavascript-sdk%2Fissues%2Fnew%2Fchoose
arosenanhttps://github.com/arosenan
base44:mainhttps://github.com/base44/javascript-sdk/tree/main
arosenan:feat/bug-438-app-session-tokenhttps://github.com/arosenan/javascript-sdk/tree/feat/bug-438-app-session-token
Conversation 0 https://github.com/base44/javascript-sdk/pull/197
Commits 2 https://github.com/base44/javascript-sdk/pull/197/commits
Checks 0 https://github.com/base44/javascript-sdk/pull/197/checks
Files changed https://github.com/base44/javascript-sdk/pull/197/files
Please reload this pagehttps://github.com/base44/javascript-sdk/pull/197/files
feat: attach short-lived app-session token to Core integration calls (BUG-438) https://github.com/base44/javascript-sdk/pull/197/files#top
Show all changes 2 commits https://github.com/base44/javascript-sdk/pull/197/files
9faf426 feat: attach short-lived app-session token to Core integration calls arosenan Jun 11, 2026 https://github.com/base44/javascript-sdk/pull/197/commits/9faf42661468f1eaade9c08b7bfb538df7881630
f2a023d feat: gate integration-session minting behind Cloudflare Turnstile arosenan Jun 11, 2026 https://github.com/base44/javascript-sdk/pull/197/commits/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156
Clear filters https://github.com/base44/javascript-sdk/pull/197/files
Please reload this pagehttps://github.com/base44/javascript-sdk/pull/197/files
Please reload this pagehttps://github.com/base44/javascript-sdk/pull/197/files
package.json https://github.com/base44/javascript-sdk/pull/197/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519
integrations.ts https://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
app-session.ts https://github.com/base44/javascript-sdk/pull/197/files#diff-86e9f138bdc366ac8f32ade4f50b5b3d7cc7934f973efe43e74b0b1c1a8f8030
turnstile.ts https://github.com/base44/javascript-sdk/pull/197/files#diff-39cde4c515bc8d470ca3f1bac9de8b012baa0aff9b5aefa4176a0c852fc6d8d3
app-session.test.ts https://github.com/base44/javascript-sdk/pull/197/files#diff-e84999a76ff52718d0173746c7cba366c32ebe1b6a5e691112369bc08eab66c2
turnstile.test.ts https://github.com/base44/javascript-sdk/pull/197/files#diff-45fefb1ca4ba7bfc055f7ed35bd9f01e54473db4981d5ea4e8e1076896a04a98
package.jsonhttps://github.com/base44/javascript-sdk/pull/197/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519
View file https://github.com/base44/javascript-sdk/blob/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156/package.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/base44/javascript-sdk/pull/197/{{ revealButtonHref }}
https://github.com/base44/javascript-sdk/pull/197/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519
src/modules/integrations.tshttps://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
View file https://github.com/base44/javascript-sdk/blob/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156/src/modules/integrations.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/base44/javascript-sdk/pull/197/{{ revealButtonHref }}
https://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
https://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
https://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
https://github.com/base44/javascript-sdk/pull/197/files#diff-81f09b728e26ec5ce96b035db4151ae7e077ddb520b018feb95cd9ebf599b5d2
src/utils/app-session.tshttps://github.com/base44/javascript-sdk/pull/197/files#diff-86e9f138bdc366ac8f32ade4f50b5b3d7cc7934f973efe43e74b0b1c1a8f8030
View file https://github.com/base44/javascript-sdk/blob/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156/src/utils/app-session.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/base44/javascript-sdk/pull/197/{{ revealButtonHref }}
src/utils/turnstile.tshttps://github.com/base44/javascript-sdk/pull/197/files#diff-39cde4c515bc8d470ca3f1bac9de8b012baa0aff9b5aefa4176a0c852fc6d8d3
View file https://github.com/base44/javascript-sdk/blob/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156/src/utils/turnstile.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/base44/javascript-sdk/pull/197/{{ revealButtonHref }}
tests/unit/app-session.test.tshttps://github.com/base44/javascript-sdk/pull/197/files#diff-e84999a76ff52718d0173746c7cba366c32ebe1b6a5e691112369bc08eab66c2
View file https://github.com/base44/javascript-sdk/blob/f2a023d7d3fe2b2e78ab96d4a0dbdb5a87dd9156/tests/unit/app-session.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/base44/javascript-sdk/pull/197/{{ revealButtonHref }}
Please reload this pagehttps://github.com/base44/javascript-sdk/pull/197/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.