fix: default elevated level to 'off' when not allowed#183
Merged
steipete merged 1 commit intoopenclaw:mainfrom Jan 4, 2026
Merged
fix: default elevated level to 'off' when not allowed#183steipete merged 1 commit intoopenclaw:mainfrom
steipete merged 1 commit intoopenclaw:mainfrom
Conversation
When elevatedAllowed is false (e.g., for heartbeat surface which isn't in any allowFrom list), the elevated level was incorrectly defaulting to 'on', causing bash commands to fail with 'elevated is not available'. Now defaults to 'off' when elevated isn't allowed, so bash works normally without trying to use elevated mode. Fixes: openclaw#181
1cf883e to
77e03a2
Compare
steipete
added a commit
that referenced
this pull request
Jan 4, 2026
Contributor
|
Thanks! |
22 tasks
slathrop
referenced
this pull request
in slathrop/openclaw-js
Feb 11, 2026
… plan Tasks completed: 2/2 - Port extension test alignment (commit #183) - Port brew noise reduction in onboarding (commit #186) SUMMARY: .planning/phases/19-misc-fixes-cleanup/19-04-SUMMARY.md Co-Authored-By: Claude Opus 4.6 <[email protected]>
dgarson
referenced
this pull request
in dgarson/clawdbot
Feb 22, 2026
dominicnunez
referenced
this pull request
in dominicnunez/openclaw
Feb 26, 2026
cael-dandelion-cult
added a commit
to karmaterminal/openclaw
that referenced
this pull request
Mar 4, 2026
… 136, debug logging assigned to Silas
sdntsng
added a commit
to tryvinci/engram-openclaw
that referenced
this pull request
Mar 24, 2026
* feat(data-explorer): searchable icon-grid view of ingested connector data (openclaw#174) Closes openclaw#173 - Backend: GET /v1/connectors/data — paginated, filterable, searchable query over connector_data_index (one entry per source doc). Adds store.list_connector_index_entries() with regex text search, provider filter, and skip/limit pagination. - Frontend hook: useConnectorData(q, source, page) with abort-controlled fetch and debounce handled in the page. - Frontend page: /dashboard/data — Google Drive-style icon grid with per-provider icons (Slack, Notion, Drive, Fathom), debounced search bar, source filter pills, spring-animated detail drawer, pagination, and empty state. - Header: adds "Data" nav link with FolderSearch icon. Co-authored-by: Claude Sonnet 4.6 <[email protected]> * checkpoint (openclaw#177) * feat(memory): add admin debug endpoints * feat(memory): wire chat and slack publishers * feat(memory): make synthesis profiles pluggable * feat(frontend): add memory admin debug page * feat(backend): publish refresh outputs to memory * chore(dev): start memory with root dev loop * feat(memory): add postgres storage provider * feat(connectors): add slack memory sync observability * docs(memory): document technical orchestration * build(memory): generate and verify code mind map * fix(frontend): remove leftover connectors merge marker * docs(engram-chat): add connector migration matrix * feat(engram-chat): migrate connector oauth parity * feat(engram-chat): migrate connector sync to memory * feat(engram-chat): migrate fathom webhook ingest * docs(engram-chat): record remaining backend legacy surface * chore(repo): remove stray ds store files * refactor(routes): retire legacy backend chat surface * fix(engram-chat): expose connector sync state collection * feat(memory): include references in chat retrieval * feat(memory): tighten connector retrieval semantics * feat(engram-chat): add mongo-backed chat prompt configs * feat(engram-chat): compose chat prompts at runtime * docs(engram-chat): document prompt override workflow * fix(engram-chat): restrict prompt overrides to admins * feat(frontend): add prompt admin controls to memory page * feat(prompts): scope product prompt control to admins * build(dev): add oauth tunnel startup command * docs(engram-chat): document stable oauth callbacks * feat(engram-chat): add direct chat fallback for local runtime * feat(frontend): enrich memory admin prompt controls * feat(frontend): add admin workspace debug portal * feat(frontend): fold memory into brand brain experience * fix(memory): repair admin event and stats endpoints * fix(frontend): expose full prompt catalog and route to chat * feat(memory): add user-scoped memory steering * feat(frontend): add explicit brand team switcher * refactor(frontend): move prompt governance into admin portal * feat(frontend): streamline brand switcher and add new brand entry * fix(frontend): route team workspace to backend api * build(dev): mirror runtime logs to root file * fix(frontend): always open brand switcher menu * refactor(frontend): remove team and data from primary nav * feat(frontend): embed data explorer into connectors * feat(frontend): add connect and explore tabs to connectors * fix(frontend): load connector explorer data from backend * fix(chat): keep product context across follow-up turns * fix(chat): ground brand-scoped turns in profile context * fix(chat): add website identity to brand context * docs(traceability): capture aligned scope * feat(chat): trace sync runs and expose admin inspection * test(chat): add context regression harness * feat(chat): expose retrieval provenance in traces * feat(chat): trace streamed chat runs * feat(frontend): inspect chat traces from admin portal * feat(multi-brand): full multi-brand support — routing, access control, delete, refresh fix (openclaw#180) * feat(multi-brand): support multiple brands per user (openclaw#178) Backend: - Store: add list_brand_profiles_for_user (all owned+member brands), create_brand_profile (new insert), upsert_brand_profile_by_id (owner-only update by id) - Brand router: POST /v1/brand creates a new brand; GET /accessible now returns ALL owned and member brands via list_brand_profiles_for_user - Add _get_brand_for_user helper for consistent owner/member access control - Thread brand_id query param through /profile, /website-identity, /refresh, /refresh-status, /today, _trigger_refresh_task, _generate_daily_brief_task - POST /profile accepts ?brand_id= to update a specific brand (owner only) - Chat: ChatRequest.brand_id optional field; _get_context and run_content_pipeline tool respect active brand_id Frontend: - BrandContext: add createBrand(); saveTracking and setBrandThemeEnabled now pass ?brand_id= when activeBrandId is set - useDailyBrief: accept brandId option, thread through today/refresh/refresh-status/ website-identity API calls - Header BrandSwitcher: "New brand" inline form to create additional brands Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(multi-brand): clear stale activeBrandId on 403/404 profile fetch If localStorage has a brand_id the user no longer has access to, the profile request returns 403. Clear the key and retry without it. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * feat(header): always show brand dropdown with + Add brand button Removed the single-brand shortcut that rendered a plain link with no dropdown — the trigger now always opens the dropdown, giving every user access to the brand list and the inline "Add brand" form. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * feat(multi-brand): add brand via website URL, not brand name POST /v1/brand now accepts website_url, derives a seed name from the domain, persists the new brand, then fires _trigger_refresh_task in the background — same extraction flow as first-brand onboarding. Frontend: createBrand() accepts a URL; Header "Add brand" input shows a Globe icon with placeholder "example.com" and a "Go" submit button. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * chore: restore stashed session changes (brand delete, context ACL, team brand_id, store methods) Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(multi-brand): correct brand routing across all pages and fix refresh crash - store: add get_brand_for_user() — single access-control resolver (owner or member) - brand.py: remove local _get_brand_for_user(), replace all 7 call sites with store method - chat.py: replace two inline access-control blocks with store.get_brand_for_user() - context.py: simplify _assert_brand_access() to use store.get_brand_for_user() - brand.py _synthesize_brief: fix NameError — bare brand_id → str(brand.id or "") - useDailyBrief: add brandId to useCallback dep arrays (fetchBrief, fetchWebsiteIdentity, fetchRefreshStatus) — was stale on brand switch - today/page: pass activeBrandId to useDailyBrief - brand-brain/page: pass brand_id param to /v1/brand/profile and /v1/brand/website-identity fetches - team/page: add useBrandProfile, pass brand_id to all 4 team API calls, add brandParam to fetchTeam deps Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --------- Co-authored-by: Claude Sonnet 4.6 <[email protected]> * feat(backend): add agent web research endpoint * feat(chat): trigger web research from search intent * feat(chat): add search policy prompt section * feat(ux): show loading indicator when a new brand is being initialized - toast.loading/success/error pair in BrandSwitcher for full-lifecycle feedback - animated skeleton loading row appears in brand list while creation is in progress - all brand-switch and delete buttons disabled while creating to prevent race conditions - deferred setActiveBrandId until after fetchBrand resolves so the switcher does not flip to the new brand before its profile is ready Closes openclaw#181 Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * fix(frontend): surface saved search data in explore * feat(chat): stream agent activity summaries * fix(frontend): soften technical thinking summaries * feat(chat): add langfuse tracing support * feat(admin): surface langfuse metadata in traces * speed up brand refresh * fix(openclaw): bind gateway to 0.0.0.0 on Render Render requires the service to listen on 0.0.0.0 for port detection. Add dockerCommand to override the Dockerfile CMD with --bind lan --port 8080, and remove the no-op OPENCLAW_GATEWAY_BIND env var (not read by the codebase). Co-Authored-By: Claude Sonnet 4.6 <[email protected]> --------- Co-authored-by: Claude Sonnet 4.6 <[email protected]> Co-authored-by: sdntsng <[email protected]>
dustin-olenslager
pushed a commit
to dustin-olenslager/ironclaw-supreme
that referenced
this pull request
Mar 24, 2026
Fato07
pushed a commit
to Fato07/elav
that referenced
this pull request
Mar 26, 2026
Adding support for pi-local
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When
elevatedAllowedisfalse(e.g., for heartbeat surface which isn't in anyallowFromlist),resolvedElevatedLevelwas incorrectly defaulting to"on", causing bash commands to fail with "elevated is not available".The Fix
One-line change in
src/auto-reply/reply.tsline 308:Root Cause
Lines 303-309 compute
resolvedElevatedLevel:When
elevatedAllowedisfalse, this defaults to"on", which then:bashElevated.defaultLevelto"on"(line 623)bash-tools.tsto think elevated mode is requested (line 170)allowedisfalse→ throws "elevated is not available"Testing
Confirmed fix works:
heartbeat) now run bash commands successfullyFixes #181