<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joshua Bellendir</title>
	<atom:link href="https://www.joshuabellendir.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.joshuabellendir.com/</link>
	<description>CIO &#124; Technology &#38; Business Transformation</description>
	<lastBuildDate>Wed, 30 Sep 2026 05:14:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2017/10/cropped-cropped-JBlogo.png?fit=32%2C32&#038;ssl=1</url>
	<title>Joshua Bellendir</title>
	<link>https://www.joshuabellendir.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">186330610</site>	<item>
		<title>OpenAI’s Dots and the Incredible Speed at Which AI Is Changing</title>
		<link>https://www.joshuabellendir.com/openais-dots-and-the-incredible-speed-at-which-ai-is-changing/</link>
					<comments>https://www.joshuabellendir.com/openais-dots-and-the-incredible-speed-at-which-ai-is-changing/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Tue, 29 Sep 2026 20:13:07 +0000</pubDate>
				<category><![CDATA[Leadership & Transformation]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=55143</guid>

					<description><![CDATA[<p>OpenAI just announced dots, and I think this could turn out to be a much bigger development than another incremental ChatGPT feature. Dots are persistent, always-on AI agents that have their own cloud computer and browser and can continue working toward a user’s goals even when that person is not &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/openais-dots-and-the-incredible-speed-at-which-ai-is-changing/">OpenAI’s Dots and the Incredible Speed at Which AI Is Changing</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">OpenAI just announced <strong>dots</strong>, and I think this could turn out to be a much bigger development than another incremental ChatGPT feature.</p>



<p class="wp-block-paragraph">Dots are persistent, always-on AI agents that have their own cloud computer and browser and can continue working toward a user’s goals even when that person is not actively sitting in front of ChatGPT. In practical terms, this starts moving us away from the idea of AI as something we simply “chat with” and much closer to AI as something that actually works alongside us.</p>



<p class="wp-block-paragraph">There are two things about this announcement that immediately stand out to me.</p>



<p class="wp-block-paragraph">The first is the incredible rate of progress taking place right now across the frontier AI labs. We are no longer talking about new features being introduced every few months in the traditional software-development sense. We are watching the way we interact with AI fundamentally change over periods of weeks and months.</p>



<p class="wp-block-paragraph">The second is what this means for the growing ecosystem of independent AI agent platforms such as OpenClaw and Hermes, which were built in large part to bridge the gap between a conversational interface like ChatGPT and an always-on intelligent agent that could access the internet, operate a computer, connect to applications, and take actions on your behalf.</p>



<p class="wp-block-paragraph">I have been experimenting extensively with these kinds of systems over the past several months, and dots makes me wonder how much of that separate agent layer we will ultimately need.</p>



<h2 class="wp-block-heading">The Speed of Progress Is Hard to Overstate</h2>



<p class="wp-block-paragraph">I have worked in technology for more than two decades, and I cannot remember another period when the capabilities of a major technology platform were changing this dramatically in such short periods of time.</p>



<p class="wp-block-paragraph">This is not simply a faster software-release cycle. The underlying interaction model is changing.</p>



<p class="wp-block-paragraph">Only a short time ago, most people thought of ChatGPT as a chatbot. You typed something into a box, it generated a response, and the interaction ended there. Since then, we have seen increasingly capable reasoning models, multimodal interfaces, browsing, coding, tool use, enterprise integrations, computer use, long-running tasks, and now persistent agents.</p>



<p class="wp-block-paragraph">What makes this particularly striking to me is that I am seeing the progression firsthand in everyday use.</p>



<p class="wp-block-paragraph">I have been using this technology heavily for the past several years across all kinds of workflows, including research, writing, coding, website maintenance, strategy, analysis, troubleshooting, and automation. One of the things I find most interesting is going back to something I attempted six months earlier and asking a newer model to do the same task.</p>



<p class="wp-block-paragraph">The difference can be dramatic.</p>



<p class="wp-block-paragraph">I have used AI to refresh old website code and content, troubleshoot problems, reason through decisions, build tools, and create new material. When I revisit those same kinds of tasks months later, the model often approaches the problem completely differently. The reasoning is stronger, the conclusions are better, the output requires less correction, and the system is capable of handling work that previously required much more guidance.</p>



<p class="wp-block-paragraph">That is what makes the progress feel so real to me. It is not a benchmark chart or a research paper. I can see the difference directly in the quality of the work.</p>



<h2 class="wp-block-heading">Why I Started Experimenting With OpenClaw and Hermes</h2>



<p class="wp-block-paragraph">Over the past several months, I have been sharing some of the experimentation I have been doing with OpenClaw and Hermes, using cloud LLMs from OpenAI, Anthropic, and Google to power different kinds of agents.</p>



<p class="wp-block-paragraph">The attraction of these platforms was that they could do things that a traditional chat interface could not.</p>



<p class="wp-block-paragraph">I could create agents that behaved more like persistent digital workers. I have experimented with using them as:</p>



<ul class="wp-block-list">
<li>a coder</li>



<li>an executive assistant</li>



<li>a brand manager</li>



<li>a research assistant</li>



<li>a digital tutor for my kids</li>
</ul>



<p class="wp-block-paragraph">I have also experimented with connecting them to messaging platforms such as Telegram, and I have been working on a similar setup through Discord.</p>



<p class="wp-block-paragraph">The idea is compelling because instead of opening ChatGPT and starting another conversation, you can have an agent that is always available, has access to specific tools and instructions, and can perform work independently.</p>



<p class="wp-block-paragraph">For a while, that represented a meaningful difference between an external agent platform and ChatGPT itself.</p>



<p class="wp-block-paragraph">But something interesting has started happening in my own workflow.</p>



<h2 class="wp-block-heading">I Have Already Started Moving Work Back Into ChatGPT</h2>



<p class="wp-block-paragraph">Even before the dots announcement, I had gradually started using my OpenClaw agents less for certain kinds of work and moving more of that activity back into ChatGPT.</p>



<p class="wp-block-paragraph">One reason is that OpenAI has been steadily adding capabilities that previously required a separate agent platform.</p>



<p class="wp-block-paragraph">Google Workspace integration is a good example. I created a dedicated Google account that I connected to ChatGPT, and I share documents into that environment from my primary account. That allows me to work with ChatGPT directly on documents, research, drafts, and other materials stored in Google Drive.</p>



<p class="wp-block-paragraph">In practice, it increasingly feels like collaborating with an always-available member of staff.</p>



<p class="wp-block-paragraph">OpenClaw was already capable of doing similar things, but as ChatGPT has added more integrations and tools, I have found myself asking a very practical question: why introduce another layer if the platform I already use every day can do the same work more easily?</p>



<p class="wp-block-paragraph">There is also another advantage ChatGPT has that is much harder for a newer agent to replicate: <strong>history and context</strong>.</p>



<p class="wp-block-paragraph">I was one of the early ChatGPT users, signing up within the first few days after it launched, and I have been using it heavily ever since. Over that time, ChatGPT has accumulated years of context around how I think, how I write, the kinds of work I do, my preferences, my strengths, and even some of my weaknesses.</p>



<p class="wp-block-paragraph">That makes a huge difference.</p>



<p class="wp-block-paragraph">If I ask ChatGPT to help me write about a topic, think through an idea, or challenge an assumption, I do not have to start from zero. It already understands a great deal about how I approach things.</p>



<p class="wp-block-paragraph">My OpenClaw agents do not have that same depth of history.</p>



<p class="wp-block-paragraph">I can export summaries, create markdown files, give them context documents, and keep feeding them more information, but it still is not quite the same.</p>



<p class="wp-block-paragraph">The analogy I keep coming back to is the difference between asking for advice from a friend you have known since high school and asking someone you met at a networking event six months ago. Both people may be intelligent and capable, but one of them simply knows you better.</p>



<p class="wp-block-paragraph">I think this idea of accumulated personal context is going to become one of the most important competitive advantages in AI over time.</p>



<h2 class="wp-block-heading">This Is Where Dots Gets Really Interesting</h2>



<p class="wp-block-paragraph">Up until now, there were still some things that my external agents could do that felt fundamentally different from the ChatGPT experience.</p>



<p class="wp-block-paragraph">They could remain active. They could operate in their own environment. They could continue performing work when I was not there. They could monitor systems, interact with applications, and behave more like persistent digital workers than conversational tools.</p>



<p class="wp-block-paragraph">Dots goes directly after that gap.</p>



<p class="wp-block-paragraph">That is what makes this announcement so important.</p>



<p class="wp-block-paragraph">OpenAI is taking a model of computing that technically inclined users have been building themselves using tools like OpenClaw and Hermes and turning it into something that can potentially be used by a much broader audience.</p>



<p class="wp-block-paragraph">If OpenAI can make that experience simple enough, the question changes from:</p>



<p class="wp-block-paragraph"><strong>Can I build my own autonomous AI agent?</strong></p>



<p class="wp-block-paragraph">to:</p>



<p class="wp-block-paragraph"><strong>Why would I build and maintain one separately if my primary AI platform already gives me one?</strong></p>



<p class="wp-block-paragraph">That does not mean platforms like OpenClaw or Hermes suddenly become irrelevant. They will still have advantages for people who want more control over the infrastructure, different underlying models, specialized integrations, custom orchestration, or the ability to operate in environments they completely own.</p>



<p class="wp-block-paragraph">But the competitive line is clearly moving.</p>



<p class="wp-block-paragraph">And it is moving fast.</p>



<h2 class="wp-block-heading">Personal AI Context May Become More Important Than the Model Itself</h2>



<p class="wp-block-paragraph">There is another aspect of this evolution that I think gets less attention than it deserves.</p>



<p class="wp-block-paragraph">For the past several years, much of the AI conversation has focused on model capability. Which model is smartest? Which one codes best? Which one scores highest on a benchmark? Which one has the largest context window?</p>



<p class="wp-block-paragraph">Those things matter, but I think another factor will become increasingly important: <strong>how well the AI knows the person using it.</strong></p>



<p class="wp-block-paragraph">Imagine an AI assistant that has worked alongside you for ten or twenty years. It understands how you communicate, how you make decisions, what you value, what you struggle with, what you have tried before, and what has worked or failed in the past.</p>



<p class="wp-block-paragraph">That kind of accumulated knowledge becomes incredibly powerful.</p>



<p class="wp-block-paragraph">This is also where I think the future becomes particularly interesting for children growing up today.</p>



<p class="wp-block-paragraph">A child born now could conceivably have a digital companion that grows alongside them for decades. It could remember their experiences, understand their learning style, know where they struggled in school, recognize patterns in their development, and help them navigate decisions over the course of their life.</p>



<p class="wp-block-paragraph">Eventually, that intelligence may not live only on a screen. As humanoid robotics progresses, some of these systems will increasingly be embodied in physical machines.</p>



<p class="wp-block-paragraph">That may sound extreme today, but the trajectory is becoming much easier to imagine than it was even a few years ago.</p>



<h2 class="wp-block-heading">I Keep Thinking Back to a Conversation I Heard in 2015</h2>



<p class="wp-block-paragraph">All of this keeps bringing me back to an experience I had while working at Fast Retailing.</p>



<p class="wp-block-paragraph">Each year, Fast Retailing held a major two-day company conference at Pacifico Yokohama in Japan. The auditorium holds roughly 5,000 people, and we would fill the hall with corporate staff and retail frontline employees from Japan and abroad.</p>



<p class="wp-block-paragraph">Tadashi Yanai, the founder of Fast Retailing and UNIQLO, was close to Masayoshi Son, the founder of SoftBank. Yanai also served on SoftBank’s board.</p>



<p class="wp-block-paragraph">At one of these conferences in 2015, Yanai invited Masa Son to participate in a fireside conversation.</p>



<p class="wp-block-paragraph">I still remember the session very clearly.</p>



<p class="wp-block-paragraph">Masa was standing in front of thousands of retail employees talking about artificial intelligence, robotics, and the technological singularity.</p>



<p class="wp-block-paragraph">This was 2015.</p>



<p class="wp-block-paragraph">We were not regularly using terms like AGI and ASI in everyday business conversations the way we are today. But the underlying ideas were already being discussed.</p>



<p class="wp-block-paragraph">One thing in particular has stuck with me: <strong>Masa said he believed we could reach singularity around 2030.</strong></p>



<p class="wp-block-paragraph">At the time, that sounded incredibly far-fetched and almost science fiction.</p>



<p class="wp-block-paragraph">Today, it feels very different.</p>



<p class="wp-block-paragraph">Given the rate of progress we have seen just over the last several years, I find myself wondering whether his prediction may prove to be surprisingly close, even if our eventual definition of “singularity” turns out to be different from what people imagined in 2015.</p>



<p class="wp-block-paragraph">We are now only a few years away from 2030.</p>



<p class="wp-block-paragraph">When I think about where AI capabilities were in 2022 compared with where they are today, it becomes difficult to confidently say that something like this is decades away.</p>



<h2 class="wp-block-heading">What Does “Singularity” Even Mean?</h2>



<p class="wp-block-paragraph">There are several definitions of the technological singularity, but the general idea is a point at which artificial intelligence becomes capable enough, and technological progress becomes rapid enough, that the future beyond that point becomes extremely difficult to predict.</p>



<p class="wp-block-paragraph">Often, the concept also includes some form of recursive improvement, where AI systems begin contributing significantly to the development of better AI systems.</p>



<p class="wp-block-paragraph">That does not necessarily mean that one morning an AI system suddenly becomes all-knowing and humanity wakes up in a science-fiction movie.</p>



<p class="wp-block-paragraph">The transition may be much less obvious than that.</p>



<p class="wp-block-paragraph">In fact, one of my personal beliefs is that we may cross important thresholds, like achieving AGI and ASI, long before we collectively agree or even think we have crossed them. Once the machines achieve that level of intelligence, do you think they will make it obvious that they have?</p>



<p class="wp-block-paragraph">The debate about AGI is already showing signs of this problem. There is no single universally accepted definition, and different people will move the goalposts depending on what systems can already do.</p>



<p class="wp-block-paragraph">We could very well reach some meaningful version of AGI and spend the following six months arguing about whether it “really counts.”</p>



<p class="wp-block-paragraph">I do not know when AGI, ASI, or anything we would call the singularity will arrive. I am skeptical of anyone who claims to know the exact date.</p>



<p class="wp-block-paragraph">But I also would not assume we are safely many years away.</p>



<p class="wp-block-paragraph">The rate of improvement makes that assumption increasingly difficult to defend.</p>



<h2 class="wp-block-heading">AI Is Already Helping Build the Next Generation of AI</h2>



<p class="wp-block-paragraph">One of the more interesting signals is what is happening inside the frontier AI labs themselves.</p>



<p class="wp-block-paragraph">Anthropic has said that a very large share of the code going into its own systems is now being written with the help of Claude. That does not mean AI is autonomously rebuilding itself without human involvement, and it would be a mistake to overstate the significance.</p>



<p class="wp-block-paragraph">But the direction is still notable.</p>



<p class="wp-block-paragraph">AI systems are increasingly helping engineers write the code used to build and improve AI systems.</p>



<p class="wp-block-paragraph">That begins to resemble at least one part of the recursive-improvement idea that people have associated with the singularity for decades.</p>



<p class="wp-block-paragraph">And this is where the speed becomes so important.</p>



<p class="wp-block-paragraph">If better AI helps people build better AI faster, and those improved systems then help build the next generation even faster, the development cycle itself begins to compress.</p>



<p class="wp-block-paragraph">We may already be seeing the early stages of that feedback loop.</p>



<h2 class="wp-block-heading">The Bigger Question Is Not Whether Dots Wins</h2>



<p class="wp-block-paragraph">Dots may become an enormous success, or it may simply be one more step toward whatever comes next.</p>



<p class="wp-block-paragraph">To me, the important part is what it represents.</p>



<p class="wp-block-paragraph">A capability that recently required technically sophisticated users to stitch together language models, computers, browsers, APIs, messaging platforms, integrations, permissions, and agent frameworks is rapidly becoming something that mainstream users may simply be able to turn on.</p>



<p class="wp-block-paragraph">That pattern has repeated itself throughout the last several years of AI.</p>



<p class="wp-block-paragraph">Capabilities that begin at the frontier quickly become product features.</p>



<p class="wp-block-paragraph">Those product features become platforms.</p>



<p class="wp-block-paragraph">And those platforms increasingly start performing work that previously required humans to operate software themselves.</p>



<p class="wp-block-paragraph">For technology leaders, that creates a much bigger strategic question than simply asking, “How should we use generative AI?”</p>



<p class="wp-block-paragraph">The emerging question is:</p>



<p class="wp-block-paragraph"><strong>What happens when every employee, every function, and eventually every customer can have persistent intelligence working on their behalf?</strong></p>



<p class="wp-block-paragraph">That question touches almost every part of enterprise technology: operating models, cybersecurity, identity, governance, data, enterprise architecture, software development, talent, workforce planning, and the future of work itself.</p>



<p class="wp-block-paragraph">I do not pretend to know exactly where this ends.</p>



<p class="wp-block-paragraph">But I keep coming back to that conversation I heard from Masa Son in 2015.</p>



<p class="wp-block-paragraph"><strong>At the time, 2030 sounded incredibly far away.</strong></p>



<p class="wp-block-paragraph"><strong>Today, watching the rate at which these systems are evolving, it suddenly does not feel very far away at all.</strong></p>
<p>The post <a href="https://www.joshuabellendir.com/openais-dots-and-the-incredible-speed-at-which-ai-is-changing/">OpenAI’s Dots and the Incredible Speed at Which AI Is Changing</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/openais-dots-and-the-incredible-speed-at-which-ai-is-changing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">55143</post-id>	</item>
		<item>
		<title>Leadership Is About People: Lessons from the CCSD TISS Spotlight on Excellence Awards</title>
		<link>https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/</link>
					<comments>https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Thu, 24 Sep 2026 23:14:05 +0000</pubDate>
				<category><![CDATA[Leadership & Transformation]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=55123</guid>

					<description><![CDATA[<p>Last weekend, I had the privilege of joining my friend Mugunth Vaithylingam, CIO of the Clark County School District, as his guest for the inaugural TISS Spotlight on Excellence Awards. It was a wonderful evening celebrating the people behind the technology organization supporting the 5th largest school district in the &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/">Leadership Is About People: Lessons from the CCSD TISS Spotlight on Excellence Awards</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Last weekend, I had the privilege of joining my friend Mugunth Vaithylingam, CIO <strong>of the</strong> Clark County School District, as his guest for the inaugural <strong>TISS Spotlight on Excellence Awards</strong>.</p>



<p class="wp-block-paragraph">It was a wonderful evening celebrating the people behind the technology organization supporting the 5th largest school district in the country. But what stood out to me most was getting to see firsthand the culture Mugunth is building and the care he puts into recognizing his team.</p>



<p class="wp-block-paragraph">The evening wasn’t simply about awards. It was about making people feel seen and appreciated. Team members were recognized for their contributions, families were thanked for the support and sacrifices that often happen behind the scenes, and CCSD’s summer student interns were included as part of the celebration and the future of the profession.</p>



<p class="wp-block-paragraph">One message from the evening particularly stayed with me: <strong>Ubuntu, “I am what I am because of you.”</strong></p>



<p class="wp-block-paragraph">It is a powerful reminder that leadership is ultimately about people. The technology matters. The transformation matters. The results matter. But none of it happens without the people behind it.</p>



<p class="wp-block-paragraph">Congratulations to Mugunth, the entire TISS organization, all of the nominees and award recipients, and everyone who helped make the evening possible.</p>



<p class="wp-block-paragraph">And thank you, Mugunth, for inviting me to be part of such a meaningful celebration. I especially loved the parting gift. The “Be Both. Human + Kind.” mug is already getting good use during my morning coffee and a little quiet writing and reflection.</p>



<p class="wp-block-paragraph"><strong>Be Both. Human + Kind.</strong></p>



<p class="wp-block-paragraph">#Leadership #CIO #TechnologyLeadership #ITLeadership #Culture #Recognition #ClarkCountySchoolDistrict</p>



<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/&quot;}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="763" height="1017" data-attachment-id="55124" data-permalink="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/mugunth-and-josh/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?fit=896%2C1195&amp;ssl=1" data-orig-size="896,1195" data-comments-opened="1" data-image-title="Mugunth and Josh" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?fit=763%2C1017&amp;ssl=1" data-id="55124" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh-768x1024-1.jpeg?resize=763%2C1017&#038;ssl=1" alt="" class="wp-image-55124" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?w=768&amp;ssl=1 768w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?resize=262%2C350&amp;ssl=1 262w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Mugunth-and-Josh.jpeg?w=896&amp;ssl=1 896w" sizes="(max-width: 763px) 100vw, 763px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="763" height="572" data-attachment-id="55126" data-permalink="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/img_0495/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?fit=1920%2C1440&amp;ssl=1" data-orig-size="1920,1440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;camera&quot;:&quot;iPhone 11&quot;,&quot;created_timestamp&quot;:&quot;1789834687&quot;,&quot;focal_length&quot;:&quot;4.25&quot;,&quot;iso&quot;:&quot;500&quot;,&quot;shutter_speed&quot;:&quot;0.025641025641026&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0495" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?fit=763%2C572&amp;ssl=1" data-id="55126" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=763%2C572&#038;ssl=1" alt="" class="wp-image-55126" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=449%2C337&amp;ssl=1 449w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?resize=1536%2C1152&amp;ssl=1 1536w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?w=466&amp;ssl=1 466w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0495.jpg?w=1920&amp;ssl=1 1920w" sizes="(max-width: 763px) 100vw, 763px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="763" height="572" data-attachment-id="55127" data-permalink="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/img_0547-2/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?fit=1920%2C1440&amp;ssl=1" data-orig-size="1920,1440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;camera&quot;:&quot;iPhone 11&quot;,&quot;created_timestamp&quot;:&quot;1790243065&quot;,&quot;focal_length&quot;:&quot;4.25&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0547 2" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?fit=763%2C572&amp;ssl=1" data-id="55127" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=763%2C572&#038;ssl=1" alt="" class="wp-image-55127" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=1536%2C1152&amp;ssl=1 1536w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?resize=449%2C337&amp;ssl=1 449w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?w=466&amp;ssl=1 466w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0547-2.jpg?w=1920&amp;ssl=1 1920w" sizes="(max-width: 763px) 100vw, 763px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="763" height="572" data-attachment-id="55125" data-permalink="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/img_0493/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?fit=1920%2C1440&amp;ssl=1" data-orig-size="1920,1440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;camera&quot;:&quot;iPhone 11&quot;,&quot;created_timestamp&quot;:&quot;1789834673&quot;,&quot;focal_length&quot;:&quot;4.25&quot;,&quot;iso&quot;:&quot;800&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0493" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?fit=763%2C572&amp;ssl=1" data-id="55125" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=763%2C572&#038;ssl=1" alt="" class="wp-image-55125" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=449%2C337&amp;ssl=1 449w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?resize=1536%2C1152&amp;ssl=1 1536w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?w=466&amp;ssl=1 466w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/IMG_0493.jpg?w=1920&amp;ssl=1 1920w" sizes="auto, (max-width: 763px) 100vw, 763px" /></figure>
</figure>
<p>The post <a href="https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/">Leadership Is About People: Lessons from the CCSD TISS Spotlight on Excellence Awards</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/leadership-is-about-people-lessons-from-the-ccsd-tiss-spotlight-on-excellence-awards/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">55123</post-id>	</item>
		<item>
		<title>I’ve Joined MishiPay as a Strategic Advisor</title>
		<link>https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/</link>
					<comments>https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Tue, 22 Sep 2026 20:47:26 +0000</pubDate>
				<category><![CDATA[Leadership & Transformation]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=55096</guid>

					<description><![CDATA[<p>The POS terminal remains one of the most under-modernized pieces of technology in retail. Many checkout environments are still built on architecture dating back to the early 2000s, while customer expectations have evolved dramatically. Over the past two decades, I’ve spent much of my career helping retailers modernize complex technology &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/">I’ve Joined MishiPay as a Strategic Advisor</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignleft is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="763" height="763" data-attachment-id="55097" data-permalink="https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/mishipay-announcement/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?fit=800%2C800&amp;ssl=1" data-orig-size="800,800" data-comments-opened="1" data-image-title="MishiPay Announcement" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?fit=763%2C763&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?resize=763%2C763&#038;ssl=1" alt="" class="wp-image-55097" style="width:441px;height:auto" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?w=800&amp;ssl=1 800w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/MishiPay-Announcement.jpeg?w=350&amp;ssl=1 350w" sizes="auto, (max-width: 763px) 100vw, 763px" /></figure>
</div>


<p class="wp-block-paragraph">The POS terminal remains one of the most under-modernized pieces of technology in retail. Many checkout environments are still built on architecture dating back to the early 2000s, while customer expectations have evolved dramatically.</p>



<p class="wp-block-paragraph">Over the past two decades, I’ve spent much of my career helping retailers modernize complex technology environments, most recently as CIO of WHSmith North America, supporting more than 350 locations, and previously in senior technology leadership roles with Fast Retailing / UNIQLO, SoftBank Robotics, Abercrombie &amp; Fitch, and Deloitte.</p>



<p class="wp-block-paragraph">So I’m excited to share that I’ve joined <a href="https://www.linkedin.com/company/mishipay/"><strong>MishiPay</strong></a> as a Strategic Advisor, working with <a href="https://www.linkedin.com/in/mustafakhanwala/"><strong>Mustafa Khanwala</strong></a> and the team in an advisory capacity on US market growth, positioning, and engagement with retailers as they rethink checkout and modernize legacy POS environments.</p>



<p class="wp-block-paragraph">What drew me to MishiPay is the pragmatism of the approach. Retailers shouldn’t have to rip out their entire POS estate simply to deliver a more modern checkout experience.</p>



<p class="wp-block-paragraph">That challenge is very real across retail today, and I think there is a significant opportunity to help organizations modernize incrementally while protecting the investments they’ve already made.</p>



<p class="wp-block-paragraph">If you’re a retail executive or technology leader thinking about the future of checkout, modernizing a legacy POS environment, or simply trying to remove POS constraints from your roadmap, we&#8217;d welcome the conversation.</p>
<p>The post <a href="https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/">I’ve Joined MishiPay as a Strategic Advisor</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/ive-joined-mishipay-as-a-strategic-advisor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">55096</post-id>	</item>
		<item>
		<title>Two Recovery Checks. One Retired Phone Number. A PayPal Account Takeover.</title>
		<link>https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/</link>
					<comments>https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 16:38:00 +0000</pubDate>
				<category><![CDATA[Technology, AI & Cybersecurity]]></category>
		<category><![CDATA[Account Takeover]]></category>
		<category><![CDATA[CIO]]></category>
		<category><![CDATA[CISO]]></category>
		<category><![CDATA[Cybersecurity]]></category>
		<category><![CDATA[PayPal]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54998</guid>

					<description><![CDATA[<p>How one retired phone number became the key to a financial account, and what the incident taught me about identity, recovery design, and what account-takeover response should really look like. My wife did not click a phishing link. She did not share her password. She did not approve an unexpected &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/">Two Recovery Checks. One Retired Phone Number. A PayPal Account Takeover.</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em><strong>How one retired phone number became the key to a financial account, and what the incident taught me about identity, recovery design, and what account-takeover response should really look like.</strong></em></p>



<p class="wp-block-paragraph">My wife did not click a phishing link.</p>



<p class="wp-block-paragraph">She did not share her password.</p>



<p class="wp-block-paragraph">She did not approve an unexpected login or read an MFA code to a stranger.</p>



<p class="wp-block-paragraph">In fact, she never interacted with the attacker at all.</p>



<p class="wp-block-paragraph">Her PayPal account was still taken over.</p>



<p class="wp-block-paragraph">The opening was a phone number she had stopped using years earlier.</p>



<p class="wp-block-paragraph">According to multiple PayPal fraud representatives, the attacker reset her password using two recovery checks: an SMS message and a WhatsApp message.</p>



<p class="wp-block-paragraph">Both were tied to the same retired phone number.</p>



<figure class="wp-block-pullquote"><blockquote><p><strong>Two checks. One underlying factor.</strong></p></blockquote></figure>



<p class="wp-block-paragraph">That is the part of this story that should matter to anyone who has ever changed a phone number, retired an email address, replaced a credit card, or simply forgotten about an old online account.</p>



<p class="wp-block-paragraph">It should also matter to the people designing authentication, fraud, and recovery systems.</p>



<p class="wp-block-paragraph">I have spent much of my career in CIO and cybersecurity leadership roles. When this happened at home, the incident responder in me took over. I wanted to know four things: What happened? How did the attacker get in? What persistence had they established? And what had to change so it could not happen again?</p>



<p class="wp-block-paragraph">What followed became a useful reminder that security failures are rarely about one bad password. They are often about old identity data, weak recovery logic, and the gap between restoring a user’s access and actually removing an adversary from an account.</p>



<h2 class="wp-block-heading">The forgotten number</h2>



<p class="wp-block-paragraph">A few years ago, my wife changed her Google Voice number. She no longer used it, and like most people, she did not maintain a master inventory showing every online account that still referenced it.</p>



<p class="wp-block-paragraph">That matters because the modern household has an identity inventory problem.</p>



<p class="wp-block-paragraph">Most of us have accumulated hundreds of online accounts over many years. As our lives progress, we change phone numbers, change jobs, move homes, replace cards, retire email addresses, and forget about services we rarely use. But those old identifiers do not always disappear from the accounts that once depended on them.</p>



<p class="wp-block-paragraph">In this case, the retired number remained associated with an old PayPal account that my wife had not logged into for years.</p>



<p class="wp-block-paragraph">My wife had done many of the things security professionals tell people to do. She uses unique passwords, a password manager, MFA, and passkeys where available. None of those controls helped with an account-recovery path tied to a phone number she no longer controlled.</p>



<p class="wp-block-paragraph">The first warning arrived quietly: an email saying her PayPal password had been reset.</p>



<p class="wp-block-paragraph">It went unnoticed and unread in her inbox.</p>



<p class="wp-block-paragraph">That is not unusual. Personal inboxes are noisy. And anyone who works in security knows the irony: PayPal-themed phishing is so common that legitimate PayPal security messages can resemble the very messages people have been trained not to trust.</p>



<p class="wp-block-paragraph">About a week later, while catching up on unread emails, my wife noticed the earlier PayPal password-reset notification along with a newer PayPal email for a payment she did not recognize. She asked whether I knew anything about it.</p>



<p class="wp-block-paragraph">My first thought was phishing.</p>



<p class="wp-block-paragraph">It was not.</p>



<p class="wp-block-paragraph">We opened PayPal directly rather than clicking anything in the email. The transaction was real. The account had been compromised.</p>



<p class="wp-block-paragraph">At that point, the payment stopped being the problem.</p>



<p class="wp-block-paragraph"><strong>It was evidence.</strong></p>



<p class="wp-block-paragraph"><strong>The account was the incident.</strong></p>



<h2 class="wp-block-heading">The incident responder in me took over</h2>



<p class="wp-block-paragraph">Having led organizations through cybersecurity incidents, I immediately shifted into crisis-response mode. My wife could still get into the account using a legitimate passkey that the attacker had not removed. That was fortunate, because it gave us visibility into the state of the account before speaking with PayPal’s fraud team.</p>



<p class="wp-block-paragraph">Once inside, I approached it the way I would approach a compromised enterprise identity: establish the timeline, assume persistence, review every trust relationship, remove anything that could allow re-entry, and only then rebuild trusted access.</p>



<p class="wp-block-paragraph">We found exactly what I would expect an attacker to establish after gaining control:</p>



<ul class="wp-block-list">
<li>A passkey we did not recognize.</li>



<li>Multiple OneTouch auto-login authorizations that were not hers.</li>



<li>Multiple unfamiliar Android device sessions.</li>



<li>Changes to authentication and trusted-access relationships that could allow the attacker to return.</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class=""><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:36.45705%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="55006" data-permalink="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-your-passkeys/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png?fit=713%2C749&amp;ssl=1" data-orig-size="713,749" data-comments-opened="1" data-image-title="Manage your Passkeys" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png?fit=713%2C749&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 3 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png?strip=info&#038;w=713&#038;ssl=1 713w" alt="Manage your PayPal Passkeys Example" data-height="749" data-id="55006" data-link="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-your-passkeys/" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png" data-width="713" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Passkeys.png?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:31.44028%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="55005" data-permalink="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-your-logins/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png?fit=645%2C786&amp;ssl=1" data-orig-size="645,786" data-comments-opened="1" data-image-title="Manage your Logins" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png?fit=645%2C786&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 3 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png?strip=info&#038;w=645&#038;ssl=1 645w" alt="Manage your PayPal logins Example" data-height="786" data-id="55005" data-link="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-your-logins/" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png" data-width="645" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-your-Logins.png?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:32.10267%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="55004" data-permalink="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-auto-logins-onetouch/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png?fit=605%2C722&amp;ssl=1" data-orig-size="605,722" data-comments-opened="1" data-image-title="Manage Auto Logins (OneTouch)" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png?fit=605%2C722&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 3 of 3 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png?strip=info&#038;w=605&#038;ssl=1 605w" alt="Manage Auto Logins with OneTouch Example" data-height="722" data-id="55004" data-link="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/manage-auto-logins-onetouch/" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png" data-width="605" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/Manage-Auto-Logins-OneTouch.png?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><em>The attacker had done more than change the password. These screenshots show the additional persistence we found inside the account: registered passkeys, OneTouch auto-login authorizations, and approved device sessions. Most of the entries shown were unfamiliar and did not belong to my wife, reinforcing why a password reset alone is not enough to contain an account takeover.</em></p>



<p class="wp-block-paragraph">That is the part of account takeover many consumers never see. Once inside, an attacker may establish persistence through trusted devices, sessions, passkeys, or other authentication methods that survive a password reset.</p>



<figure class="wp-block-pullquote"><blockquote><p><strong>Account recovery and incident containment are not the same thing.</strong></p></blockquote></figure>



<p class="wp-block-paragraph"><strong>Recovery gives the legitimate owner access again.</strong></p>



<p class="wp-block-paragraph"><strong>Containment removes the adversary.</strong></p>



<p class="wp-block-paragraph">We reset the password, reviewed authentication methods, removed the unauthorized passkey, cleared unfamiliar sessions and devices, removed OneTouch authorizations we did not recognize, re-established trusted authentication, and reviewed the account for other unauthorized changes.</p>



<p class="wp-block-paragraph">As far as we could determine, there were no additional unauthorized transactions beyond those already identified. PayPal reversed the unauthorized payment quickly, and there was no financial loss. That part of the response was fast and effective.</p>



<p class="wp-block-paragraph">But I still did not know how the attacker got in.</p>



<p class="wp-block-paragraph">And until you know that, you do not know what else you should consider compromised.</p>



<h2 class="wp-block-heading">How did they get in?</h2>



<p class="wp-block-paragraph">This became the investigative part of the incident.</p>



<p class="wp-block-paragraph">I called PayPal’s fraud department repeatedly because the answer mattered. If the attacker had compromised my wife’s email account, I needed to respond to that. If they had used an old credit card, I wanted to understand that exposure. If they had answered security questions, that suggested a different problem again.</p>



<p class="wp-block-paragraph">The first explanation we received was vague and initially pointed us in the wrong direction. A representative referred to my wife’s email address and the forgot-password process, which left open the possibility that the email account itself had been compromised.</p>



<p class="wp-block-paragraph">So I kept asking.</p>



<p class="wp-block-paragraph">On a later call, a PayPal fraud representative confirmed the recovery methods used in the actual takeover.</p>



<p class="wp-block-paragraph">The attacker had initiated PayPal’s “Forgot password” process using my wife’s email address as the account identifier.</p>



<p class="wp-block-paragraph">Then, according to the representative, the attacker used “Get a Text” as one recovery check and “Get a WhatsApp Text” as the other.</p>



<p class="wp-block-paragraph">Both went to the same retired number.</p>



<p class="wp-block-paragraph">I did not rely on that one conversation. We subsequently confirmed the same recovery sequence with additional PayPal fraud representatives, including a supervisor. One representative also confirmed that no email code, credit card number, or security-question response was used. This narrowed the reset path to the SMS and WhatsApp checks tied to the retired number.</p>



<p class="wp-block-paragraph">That changed the entire understanding of the incident.</p>



<figure class="wp-block-pullquote"><blockquote><p><strong>Two recovery prompts. One phone number.</strong></p></blockquote></figure>



<p class="wp-block-paragraph">At the time of the incident, the PayPal recovery screen we observed presented several options, including SMS, WhatsApp, security questions, and confirmation of a credit card number.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="478" height="622" data-attachment-id="55003" data-permalink="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/whatsapp-text-option/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?fit=478%2C622&amp;ssl=1" data-orig-size="478,622" data-comments-opened="1" data-image-title="WhatsApp Text Option" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?fit=478%2C622&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?resize=478%2C622&#038;ssl=1" alt="PayPal password-recovery screen offering SMS and WhatsApp verification to the same redacted phone number." class="wp-image-55003" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?w=478&amp;ssl=1 478w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?resize=231%2C300&amp;ssl=1 231w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/09/WhatsApp-Text-Option.png?resize=269%2C350&amp;ssl=1 269w" sizes="auto, (max-width: 478px) 100vw, 478px" /><figcaption class="wp-element-caption"><br><em>At the time of the incident, PayPal presented SMS and WhatsApp as separate recovery options tied to the same phone number.</em></figcaption></figure>



<p class="wp-block-paragraph">The problem was allowing SMS and WhatsApp associated with the same telephone number to satisfy successive recovery checks.</p>



<p class="wp-block-paragraph">From a security-design standpoint, those are not independent factors. Two interfaces are not two independent controls when compromising the same underlying asset defeats both.</p>



<p class="wp-block-paragraph">Based on what PayPal’s representatives told us, that was the path used to reset my wife’s password. Had the recovery process required genuinely independent evidence, this specific takeover path would not have worked.</p>



<p class="wp-block-paragraph">Large-scale breaches involving companies such as Equifax, Marriott, Meta, Ticketmaster, and Change Healthcare have exposed enormous volumes of personal information, including names, email addresses, phone numbers, physical addresses, dates of birth, payment information, and other identity data.</p>



<p class="wp-block-paragraph">I do not know how the attacker connected my wife’s retired phone number to her PayPal login, and I do not want to speculate about a specific source or technique. But pieces of our identity now exist across an enormous number of systems, and once that data is exposed, scraped, brokered, or stolen, attackers can potentially connect relationships we may have forgotten ourselves.</p>



<figure class="wp-block-pullquote"><blockquote><p><strong>An old phone number that seems meaningless to you may still be an authentication signal somewhere else.</strong></p></blockquote></figure>



<h2 class="wp-block-heading">What I reported to PayPal and what appears to have changed</h2>



<p class="wp-block-paragraph">Once I understood the recovery path, I told PayPal’s fraud team that I believed the same-number recovery logic represented a serious security weakness and asked that it be escalated.</p>



<p class="wp-block-paragraph">PayPal never provided me with a written technical explanation of what it changed or when.</p>



<p class="wp-block-paragraph"><strong>But something changed.</strong></p>



<p class="wp-block-paragraph">When I tested the flow a few days after reporting the issue, I could not reproduce the SMS-then-WhatsApp sequence. After completing SMS verification, WhatsApp tied to that same number was no longer available as the next recovery check. I also tested the behavior using several other accounts available to me and could not reproduce the earlier sequence.</p>



<p class="wp-block-paragraph">A PayPal fraud representative later told me the recovery concern had been escalated to its technical team and thanked me for bringing it to their attention, noting that it could affect other users as well. She also indicated that the earlier recovery flow was no longer available at that time and said the matter had been taken very seriously.</p>



<p class="wp-block-paragraph">That deserves credit.</p>



<p class="wp-block-paragraph">If the control was changed in response to this incident, PayPal moved quickly.</p>



<p class="wp-block-paragraph">But quick remediation should not obscure the underlying lesson: the recovery design should not have allowed two channels dependent on the same telephone number to function as independent assurance in the first place.</p>



<p class="wp-block-paragraph">For security and technology leaders, the lesson is simple: adding another verification step does not automatically add security. If the same underlying compromise defeats both, the system may look layered while still depending on a single point of failure.</p>



<h2 class="wp-block-heading">The bigger problem I still think PayPal needs to solve</h2>



<p class="wp-block-paragraph">The specific recovery weakness we observed appears to have been addressed.</p>



<p class="wp-block-paragraph">The customer account-takeover support experience is what still concerns me.</p>



<p class="wp-block-paragraph">During our initial fraud-support calls, the focus was primarily on the unauthorized transaction, the password, and whether my wife could get back into the account.</p>



<p class="wp-block-paragraph">No representative proactively initiated a comprehensive reset of the account’s trust relationships. We were not immediately guided through every active session, passkey, OneTouch authorization, trusted device, and authentication method. We discovered and removed the broader persistence mechanisms ourselves. It was only after I asked whether PayPal normally helps customers review those areas that a representative offered to walk us through some of the checks.</p>



<p class="wp-block-paragraph">That may sound like a support-process issue. It is actually a security-control issue.</p>



<p class="wp-block-paragraph">Imagine the account holder was not married to someone who has spent years dealing with cybersecurity incidents.</p>



<p class="wp-block-paragraph">Imagine it was your mother.</p>



<p class="wp-block-paragraph">Your grandfather.</p>



<p class="wp-block-paragraph">Your aunt or uncle.</p>



<p class="wp-block-paragraph">The fraudulent payment gets reversed. The password is changed. A fraud representative confirms that the user can log in again.</p>



<p class="wp-block-paragraph">Would that person know to inspect registered passkeys?</p>



<p class="wp-block-paragraph">Would they know what OneTouch is?</p>



<p class="wp-block-paragraph">Would they know to terminate every unfamiliar session and trusted device?</p>



<p class="wp-block-paragraph">Would they know which MFA methods should be removed and re-enrolled?</p>



<p class="wp-block-paragraph">Should they have to?</p>



<p class="wp-block-paragraph"><strong>They should not.</strong></p>



<p class="wp-block-paragraph">A confirmed account takeover should trigger a repeatable containment workflow that returns the account to a known-good state. Active sessions should be terminated, newly added authentication methods and trusted devices reviewed or revoked, recovery information verified, and the legitimate owner helped to rebuild trusted access.</p>



<p class="wp-block-paragraph">PayPal did an excellent job of quickly reversing the unauthorized charges and recovering the funds, but fixing the transaction is not the same as securing the account.</p>



<figure class="wp-block-pullquote"><blockquote><p>The customer should leave the interaction knowing two things: the money is addressed, and the attacker is gone.</p></blockquote></figure>



<p class="wp-block-paragraph">Security has to work for the least technical legitimate customer while still being difficult for the most capable attacker.</p>



<h2 class="wp-block-heading">The bigger lesson: your digital identity has an inventory problem</h2>



<p class="wp-block-paragraph">The most important lesson I took from this incident is not actually about PayPal.</p>



<p class="wp-block-paragraph">It is about how we manage digital identity over time.</p>



<p class="wp-block-paragraph">Phone numbers, email addresses, postal addresses, payment cards, recovery emails, and authentication methods are no longer merely contact details.</p>



<p class="wp-block-paragraph"><strong>They are identity infrastructure.</strong></p>



<p class="wp-block-paragraph">Online services use them to decide who we are, how we recover accounts, and sometimes whether we should be allowed to reset credentials.</p>



<p class="wp-block-paragraph">But most households do not maintain an inventory of that infrastructure.</p>



<p class="wp-block-paragraph"><strong>We should.</strong></p>



<p class="wp-block-paragraph">I am a strong advocate of password managers, but I think we need to use them for more than passwords. Treat your password manager as a lightweight inventory of the identity information attached to your important accounts.</p>



<p class="wp-block-paragraph">For financial, medical, government, cloud-storage, primary email, and other sensitive accounts, record at least:</p>



<ul class="wp-block-list">
<li>The registered email address.</li>



<li>The registered phone number.</li>



<li>Any recovery email address or phone number.</li>



<li>The postal address on file when relevant.</li>



<li>The MFA method in use.</li>



<li>Any important payment or identity information the service relies upon for recovery.</li>
</ul>



<p class="wp-block-paragraph">Then make one behavior routine:</p>



<p class="wp-block-paragraph">Whenever you change a phone number, retire an email address, move homes, or replace an identity anchor, search the password manager for the old value and update every account that still depends on it.</p>



<p class="wp-block-paragraph">That simple practice would have identified this old PayPal association before an attacker did.</p>



<div class="wp-block-group editorial-callout"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">Do this today</h2>



<p class="wp-block-paragraph">Search your password manager for every old phone number and email address you can remember. Update any account that still depends on them.</p>
</div></div>



<h2 class="wp-block-heading">The security basics still matter</h2>



<p class="wp-block-paragraph">This incident does not mean passwords, MFA, passkeys, or password managers failed. It demonstrates why security has to be managed as a lifecycle rather than a one-time setup.</p>



<p class="wp-block-paragraph">Use strong authentication, keep recovery information current, review trusted devices and active sessions on sensitive accounts, and treat unexpected password-reset messages as incidents until proven otherwise.</p>



<p class="wp-block-paragraph">Most importantly, when you retire a phone number or email address, do not assume the risk retires with it.</p>



<h2 class="wp-block-heading">Security leadership starts at home</h2>



<p class="wp-block-paragraph">Executives and security leaders spend enormous amounts of time talking about identity governance, asset inventories, layered controls, incident response, root-cause analysis, and lessons learned.</p>



<p class="wp-block-paragraph">Those principles do not stop at the office door.</p>



<p class="wp-block-paragraph">Our households are small digital enterprises. They contain financial information, health records, identity documents, cloud accounts, personal communications, and the people we care most about.</p>



<p class="wp-block-paragraph">This incident ended well. PayPal reversed the unauthorized transaction. We contained the account. The specific recovery sequence involved in the takeover appears to have been changed after I raised it. Those are meaningful positives.</p>



<p class="wp-block-paragraph">But the incident should never have been possible through the recovery path PayPal’s representatives described to us.</p>



<p class="wp-block-paragraph">And a customer who reports a confirmed takeover should not need cybersecurity expertise to make sure the attacker has truly been removed.</p>



<p class="wp-block-paragraph">That is where I believe PayPal, and every company responsible for sensitive consumer identities, should keep improving.</p>



<p class="wp-block-paragraph">If you do one thing after reading this, open your password manager today and search for every old phone number and email address you can remember.</p>



<p class="wp-block-paragraph"><strong>The account you forgot about may be the one an attacker finds first.</strong></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><em>Joshua Bellendir is a technology executive and advisor with global CIO and cybersecurity leadership experience across retail, technology, and consumer businesses.</em></p>
<p>The post <a href="https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/">Two Recovery Checks. One Retired Phone Number. A PayPal Account Takeover.</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/two-recovery-checks-one-retired-phone-number-a-paypal-account-takeover/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54998</post-id>	</item>
		<item>
		<title>Quoted in CIO.com &#124; 6 strategic trade-offs CIOs can’t afford to get wrong</title>
		<link>https://www.joshuabellendir.com/innovation-and-operational-resilience-are-not-opposites/</link>
					<comments>https://www.joshuabellendir.com/innovation-and-operational-resilience-are-not-opposites/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Thu, 30 Jul 2026 17:57:30 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Leadership & Transformation]]></category>
		<category><![CDATA[Technology, AI & Cybersecurity]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54248</guid>

					<description><![CDATA[<p>Technology leadership is rarely about choosing between innovation and operational resilience. The real work is building the conditions for both. That idea was at the center of a recent CIO.com article by Mary K. Pratt on the strategic trade-offs CIOs are navigating today. I was grateful to be included in &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/innovation-and-operational-resilience-are-not-opposites/">Quoted in CIO.com | 6 strategic trade-offs CIOs can’t afford to get wrong</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Technology leadership is rarely about choosing between innovation and operational resilience. The real work is building the conditions for both.</p>



<p class="wp-block-paragraph">That idea was at the center of a recent CIO.com article by Mary K. Pratt on the strategic trade-offs CIOs are navigating today. I was grateful to be included in the discussion alongside a thoughtful group of technology leaders, and the topic is one I believe deserves more attention.</p>



<p class="wp-block-paragraph">Every business wants to move faster. Executives want new digital capabilities, better customer experiences, more automation, AI-enabled workflows, and faster access to data. Those expectations are reasonable. Technology should help the business grow, adapt, and compete.</p>



<p class="wp-block-paragraph">But speed only creates lasting value when the underlying technology foundation is reliable.</p>



<p class="wp-block-paragraph">Customers and employees expect technology to work every day. They expect systems to be available, secure, responsive, and intuitive. When the foundation is unstable, innovation slows down because confidence erodes. Teams become more cautious. Business leaders hesitate to invest in new capabilities. Technology organizations spend more time reacting than advancing.</p>



<p class="wp-block-paragraph">At the same time, avoiding modernization is not a resilience strategy.</p>



<p class="wp-block-paragraph">Aging platforms may feel stable because they are familiar, but over time they often become harder to support, secure, integrate, and scale. The longer modernization is deferred, the more operational risk accumulates beneath the surface. Eventually, the organization finds itself trying to innovate on top of systems that were not built for the pace, complexity, or expectations of the modern business.</p>



<p class="wp-block-paragraph">That is why I view innovation and operational resilience as interdependent rather than competing priorities.</p>



<p class="wp-block-paragraph">Innovation introduces change, and change introduces risk. The answer is not to slow innovation for the sake of stability. The answer is to create the discipline, governance, architecture, and operating standards that allow the business to innovate with confidence.</p>



<p class="wp-block-paragraph">In practical terms, that means piloting quickly, learning quickly, and being deliberate about what moves into enterprise-scale operations. It means creating space for experimentation while maintaining disciplined production standards. It means modernizing core platforms before they become constraints. And it means treating reliability as a strategic business capability, not just an IT metric.</p>



<p class="wp-block-paragraph">During my time as CIO at WHSmith North America, we faced this balance directly while modernizing core retail platforms and upgrading store technology across a large retail footprint, including high-volume locations in some of the busiest transportation hubs in North America. Those initiatives were critical to positioning the business for future growth, but they also required careful execution to protect reliable day-to-day operations.</p>



<p class="wp-block-paragraph">That is the balancing act many CIOs are managing now: helping the business move faster while making sure the foundation can support that speed.</p>



<p class="wp-block-paragraph">The organizations that get this right do not frame resilience as an obstacle to innovation. They frame it as an enabler. The executive conversation shifts from “How do we reduce risk?” to “How do we create the confidence to move faster?”</p>



<p class="wp-block-paragraph">That shift matters.</p>



<p class="wp-block-paragraph">As AI, automation, cloud platforms, data products, and digital customer experiences become more deeply embedded in business strategy, technology leaders will continue to face pressure to accelerate. But sustainable acceleration depends on trust. Trust in the systems. Trust in the data. Trust in the security model. Trust in the team’s ability to move quickly without creating unnecessary fragility.</p>



<p class="wp-block-paragraph">That trust is built through operational discipline.</p>



<p class="wp-block-paragraph">Mary’s CIO.com article does a great job bringing together a range of perspectives on the trade-offs technology leaders are facing, including innovation, resilience, risk management, data protection, organizational readiness, and AI cost. It is worth reading for anyone thinking about how the CIO role continues to evolve.</p>



<p class="wp-block-paragraph">Read the full article here:</p>



<p class="wp-block-paragraph"><strong><a href="https://www.cio.com/article/4201338/6-strategic-trade-offs-cios-cant-afford-to-get-wrong.html" target="_blank" rel="noreferrer noopener nofollow">https://www.cio.com/article/4201338/6-strategic-trade-offs-cios-cant-afford-to-get-wrong.html</a></strong></p>
<p>The post <a href="https://www.joshuabellendir.com/innovation-and-operational-resilience-are-not-opposites/">Quoted in CIO.com | 6 strategic trade-offs CIOs can’t afford to get wrong</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/innovation-and-operational-resilience-are-not-opposites/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54248</post-id>	</item>
		<item>
		<title>A Safer Way to Connect Google Drive to ChatGPT: Use an Isolated Agent Account</title>
		<link>https://www.joshuabellendir.com/a-safer-way-to-connect-google-drive-to-chatgpt-use-an-isolated-agent-account/</link>
					<comments>https://www.joshuabellendir.com/a-safer-way-to-connect-google-drive-to-chatgpt-use-an-isolated-agent-account/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Wed, 29 Jul 2026 23:00:00 +0000</pubDate>
				<category><![CDATA[Technology, AI & Cybersecurity]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54967</guid>

					<description><![CDATA[<p>As AI assistants become more capable, I increasingly want them to work with my actual files rather than forcing me to constantly upload documents, download updated versions, and manually move information back and forth. Google Drive integration with ChatGPT is a good example. Giving an AI assistant access to Google &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/a-safer-way-to-connect-google-drive-to-chatgpt-use-an-isolated-agent-account/">A Safer Way to Connect Google Drive to ChatGPT: Use an Isolated Agent Account</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As AI assistants become more capable, I increasingly want them to work with my actual files rather than forcing me to constantly upload documents, download updated versions, and manually move information back and forth.</p>



<p class="wp-block-paragraph">Google Drive integration with ChatGPT is a good example.</p>



<p class="wp-block-paragraph">Giving an AI assistant access to Google Drive can make it significantly more useful. It can reference documents, find information across files, and, depending on the capabilities enabled, perform actions involving Google Docs, Sheets, Slides, and other Drive files.</p>



<p class="wp-block-paragraph">But there is an obvious question:</p>



<p class="wp-block-paragraph"><strong>Do I really want to connect my primary Google account and potentially expose my entire Drive?</strong></p>



<p class="wp-block-paragraph">For me, the answer is no.</p>



<p class="wp-block-paragraph">Instead, I am using a simple isolation pattern: <strong>create a separate Google account specifically for AI agents, then deliberately share files and folders with that account from my primary Google Drive.</strong></p>



<p class="wp-block-paragraph">I call this secondary account the <strong>Agent account</strong>.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">The Basic Architecture</h2>



<p class="wp-block-paragraph">The model is straightforward:</p>



<p class="wp-block-paragraph"><strong>Primary Google Account → Shared Files/Folders → Agent Google Account → ChatGPT</strong></p>



<p class="wp-block-paragraph">My primary Google account remains the system of record.</p>



<p class="wp-block-paragraph">The Agent account only has access to documents that I have explicitly shared with it.</p>



<p class="wp-block-paragraph">ChatGPT is then connected to the Agent account rather than my primary account.</p>



<p class="wp-block-paragraph">This creates a simple but useful security boundary.</p>



<p class="wp-block-paragraph">Instead of asking:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What files in my Drive can ChatGPT access?</p>
</blockquote>



<p class="wp-block-paragraph">I can ask:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What have I intentionally shared with the Agent account?</p>
</blockquote>



<p class="wp-block-paragraph">That is a much easier question to answer.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Why I Prefer This Approach</h2>



<p class="wp-block-paragraph">When connecting Google Drive directly to ChatGPT, the authorization can be broad.</p>



<p class="wp-block-paragraph">OpenAI&#8217;s current documentation says that Google Drive integrations can request read access across Drive and, when Drive actions are enabled, can request permissions that support creating, updating, moving, sharing, copying, uploading, and deleting Drive-family files.</p>



<p class="wp-block-paragraph">That level of integration is useful, but I don&#8217;t necessarily want to provide it against the Google account containing everything I have accumulated over many years.</p>



<p class="wp-block-paragraph">So rather than relying exclusively on application-level permissions, I am creating an <strong>identity-level boundary</strong>.</p>



<p class="wp-block-paragraph">The Agent account simply cannot access files that have never been shared with it.</p>



<p class="wp-block-paragraph">That gives the human operator an additional layer of control.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Step 1: Create a Dedicated Google Account</h2>



<p class="wp-block-paragraph">Create a secondary Google account that will be used exclusively for AI integrations.</p>



<p class="wp-block-paragraph">For example:</p>



<p class="wp-block-paragraph"><code>yourname.agent@gmail.com</code></p>



<p class="wp-block-paragraph">or</p>



<p class="wp-block-paragraph"><code>company.ai.agent@gmail.com</code></p>



<p class="wp-block-paragraph">The exact naming convention doesn&#8217;t matter.</p>



<p class="wp-block-paragraph">What matters is that this account is <strong>not your normal Google account</strong>.</p>



<p class="wp-block-paragraph">Do not use it for regular email, personal photos, browser synchronization, financial records, or other day-to-day activities.</p>



<p class="wp-block-paragraph">Think of it as a service identity for AI.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Step 2: Keep Your Primary Drive as the Source of Truth</h2>



<p class="wp-block-paragraph">There is no need to migrate everything into the Agent account.</p>



<p class="wp-block-paragraph">Continue creating and managing files from your normal Google account.</p>



<p class="wp-block-paragraph">Your existing ownership model remains unchanged.</p>



<p class="wp-block-paragraph">Instead, selectively share material with the Agent account just as you would share a document with another person.</p>



<p class="wp-block-paragraph">For example, I might eventually share folders such as:</p>



<ul class="wp-block-list">
<li>Professional career and resume notes</li>



<li>Company research</li>



<li>Project documentation</li>



<li>Blog posts and ideas</li>



<li>Reference material</li>



<li>Working documents I routinely use with ChatGPT</li>
</ul>



<p class="wp-block-paragraph">But I would not automatically share my entire Drive.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Step 3: Grant Access Deliberately</h2>



<p class="wp-block-paragraph">This is the most important part of the model.</p>



<p class="wp-block-paragraph">When I want ChatGPT to work with something, I grant the Agent account access to it.</p>



<p class="wp-block-paragraph">If ChatGPT only needs to reference information, I can give the Agent account <strong>Viewer</strong> access.</p>



<p class="wp-block-paragraph">If I want ChatGPT to eventually modify or update a document, the Agent account will need the appropriate <strong>Editor</strong> permissions.</p>



<p class="wp-block-paragraph">This turns AI data access into an intentional action.</p>



<p class="wp-block-paragraph"><strong>No sharing means no access through the Agent account.</strong></p>



<p class="wp-block-paragraph">Over time, the Agent account will gain access to more and more information. That is expected.</p>



<p class="wp-block-paragraph">The important distinction is that access grows <strong>deliberately rather than implicitly</strong>.</p>



<p class="wp-block-paragraph">Every folder and file permission represents a conscious decision:</p>



<p class="wp-block-paragraph"><strong>I am comfortable making this information available to my AI tools.</strong></p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Step 4: Connect the Agent Account to ChatGPT</h2>



<p class="wp-block-paragraph">In ChatGPT, open the app or plugin settings and locate the Google Drive integration.</p>



<p class="wp-block-paragraph">Choose <strong>Connect</strong> and authenticate using the <strong><span style="text-decoration: underline;">Agent</span></strong> Google account, not your primary account.</p>



<p class="wp-block-paragraph">Be especially careful here if you are already signed into multiple Google accounts in your browser. Google will typically present an account-selection screen during authorization.</p>



<p class="wp-block-paragraph">Verify the email address before approving access.</p>



<p class="wp-block-paragraph">Once connected, ChatGPT&#8217;s Google Drive access is associated with the Agent account.</p>



<p class="wp-block-paragraph">According to OpenAI, ChatGPT respects the permissions of the Google account being connected. In other words, it can only access content available to that Google identity.</p>



<p class="wp-block-paragraph">That is exactly what makes this architecture useful.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Step 5: Start Small</h2>



<p class="wp-block-paragraph">I would not immediately share twenty years of documents with the Agent account.</p>



<p class="wp-block-paragraph">Start with one test folder.</p>



<p class="wp-block-paragraph">For example:</p>



<p class="wp-block-paragraph"><strong>AI Working Files</strong></p>



<p class="wp-block-paragraph">Put a few non-sensitive documents in it and share the folder with the Agent account.</p>



<p class="wp-block-paragraph">Then test things such as:</p>



<ul class="wp-block-list">
<li>Find a particular document</li>



<li>Summarize it</li>



<li>Compare two documents</li>



<li>Extract information</li>



<li>Update a working document, if write actions are enabled</li>



<li>Verify that files outside the shared scope cannot be found through the Agent account</li>
</ul>



<p class="wp-block-paragraph">Once you are comfortable with the behavior, expand access gradually.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">A Useful Folder Model</h2>



<p class="wp-block-paragraph">One approach is to create a dedicated folder hierarchy in your primary Drive:</p>



<p class="wp-block-paragraph"><strong>AI Shared</strong></p>



<ul class="wp-block-list">
<li>Career</li>



<li>Research</li>



<li>Projects</li>



<li>Reference</li>



<li>Working Documents</li>



<li>Temporary</li>
</ul>



<p class="wp-block-paragraph">Then share the parent folder, selected child folders, or individual documents with the Agent account depending on how much access you want to provide.</p>



<p class="wp-block-paragraph">There is no single correct structure.</p>



<p class="wp-block-paragraph">The important part is that the folder hierarchy makes the access boundary <strong>visible and understandable to a human being</strong>.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">This Is Really a Least-Privilege Pattern</h2>



<p class="wp-block-paragraph">The principle behind this approach is not unique to ChatGPT.</p>



<p class="wp-block-paragraph">It is a basic cybersecurity concept: <strong>Least privilege.</strong></p>



<p class="wp-block-paragraph">An identity should receive only the access necessary to perform its function.</p>



<p class="wp-block-paragraph">We routinely apply this concept to employees, service accounts, applications, databases, APIs, and cloud infrastructure.</p>



<p class="wp-block-paragraph">AI agents should be treated the same way.</p>



<p class="wp-block-paragraph">As agents become capable of reading, creating, updating, and taking action across enterprise systems, identity and authorization become increasingly important.</p>



<p class="wp-block-paragraph">The question should not be:</p>



<p class="wp-block-paragraph"><strong>Can the AI access this system?</strong></p>



<p class="wp-block-paragraph">It should be:</p>



<p class="wp-block-paragraph"><strong>Which identity is the AI using, what can that identity access, and why?</strong></p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">The Human Remains the Gatekeeper</h2>



<p class="wp-block-paragraph">One of the things I particularly like about this model is that it keeps the human operator directly involved in expanding the agent&#8217;s knowledge environment.</p>



<p class="wp-block-paragraph">When I decide ChatGPT would benefit from another folder, I share it.</p>



<p class="wp-block-paragraph">When a project ends, I can remove access.</p>



<p class="wp-block-paragraph">When I want an agent to reference something but not modify it, I can use read-only permissions.</p>



<p class="wp-block-paragraph">The Agent account becomes a practical representation of the information environment I have chosen to expose to AI.</p>



<p class="wp-block-paragraph">And because Google Drive already has mature sharing and permission controls, I don&#8217;t need to invent an entirely new governance mechanism.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">Important Limitations</h2>



<p class="wp-block-paragraph">This approach should not be interpreted as a perfect security sandbox.</p>



<p class="wp-block-paragraph">Connecting an external application to a Google account still means granting that application OAuth permissions. You should review the permissions Google presents during authorization and understand what capabilities you are enabling.</p>



<p class="wp-block-paragraph">OpenAI also notes that connected Google content may be indexed and synchronized to improve retrieval, depending on the integration and configuration being used. Disconnecting the app removes the connection, although associated indexed content may be retained temporarily according to OpenAI&#8217;s data retention policies.</p>



<p class="wp-block-paragraph">Organizations using ChatGPT Business, Enterprise, or Edu may also have more sophisticated administrative options, including controls that can limit synced Google Drive access to particular Shared Drives or folders.</p>



<p class="wp-block-paragraph">For an individual user, however, the secondary-account model provides an additional boundary that is simple to understand and easy to manage.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>
</div></div>



<h2 class="wp-block-heading">A Simple Mental Model</h2>



<p class="wp-block-paragraph">I think about it this way:</p>



<p class="wp-block-paragraph"><strong>My primary Google account represents everything I know.</strong></p>



<p class="wp-block-paragraph"><strong>My Agent account represents everything I have intentionally decided my AI agents are allowed to know.</strong></p>



<p class="wp-block-paragraph">That distinction will become increasingly important.</p>



<p class="wp-block-paragraph">Today we are talking about Google Drive.</p>



<p class="wp-block-paragraph">Tomorrow it may be email, calendars, project-management platforms, financial systems, CRM applications, source-code repositories, and internal company knowledge.</p>



<p class="wp-block-paragraph">As AI moves from answering questions to actually performing work, giving agents unrestricted access to our digital environments is unlikely to be the right model.</p>



<p class="wp-block-paragraph">A better approach is to progressively grant access based on need.</p>



<p class="wp-block-paragraph">Start small.</p>



<p class="wp-block-paragraph">Observe what the agent can do.</p>



<p class="wp-block-paragraph">Add information and permissions deliberately.</p>



<p class="wp-block-paragraph">And always maintain a clear understanding of which identity your AI is operating through and what that identity can access.</p>
<p>The post <a href="https://www.joshuabellendir.com/a-safer-way-to-connect-google-drive-to-chatgpt-use-an-isolated-agent-account/">A Safer Way to Connect Google Drive to ChatGPT: Use an Isolated Agent Account</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/a-safer-way-to-connect-google-drive-to-chatgpt-use-an-isolated-agent-account/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54967</post-id>	</item>
		<item>
		<title>Quoted in CIO.com &#124; Cloud Strategy Is No Longer Just an Infrastructure Decision</title>
		<link>https://www.joshuabellendir.com/cloud-strategy-is-no-longer-just-an-infrastructure-decision/</link>
					<comments>https://www.joshuabellendir.com/cloud-strategy-is-no-longer-just-an-infrastructure-decision/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Sat, 27 Jun 2026 02:47:00 +0000</pubDate>
				<category><![CDATA[Leadership & Transformation]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=55130</guid>

					<description><![CDATA[<p>I recently had the opportunity to contribute to a CIO.com article by Esther Shein examining how enterprise cloud strategies are becoming increasingly complex as CIOs navigate AI, cybersecurity, data governance, cost pressures, sovereignty requirements, and evolving workload demands. For years, the cloud conversation centered largely on agility, scalability, and cost &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/cloud-strategy-is-no-longer-just-an-infrastructure-decision/">Quoted in CIO.com | Cloud Strategy Is No Longer Just an Infrastructure Decision</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently had the opportunity to contribute to a <a href="https://CIO.com" data-type="link" data-id="CIO.com">CIO.com</a> article by Esther Shein examining how enterprise cloud strategies are becoming increasingly complex as CIOs navigate AI, cybersecurity, data governance, cost pressures, sovereignty requirements, and evolving workload demands.</p>



<p class="wp-block-paragraph">For years, the cloud conversation centered largely on agility, scalability, and cost optimization. Those benefits remain important, but the decisions facing technology leaders today extend well beyond infrastructure.</p>



<p class="wp-block-paragraph">As I shared with CIO.com:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“Today, we are balancing a much broader and more complicated set of considerations, including AI readiness, cybersecurity, data governance, sovereign data requirements, edge computing, integration architecture, and operational resilience.”</p>
</blockquote>



<p class="wp-block-paragraph">This is an important evolution. Cloud strategy can no longer be separated from enterprise architecture, data strategy, cybersecurity, or the broader business transformation agenda.</p>



<h3 class="wp-block-heading">From Cloud Migration to Cloud Optimization</h3>



<p class="wp-block-paragraph">Many enterprises have already completed significant portions of their initial cloud journeys. The challenge now is determining how to operate those environments more effectively.</p>



<p class="wp-block-paragraph">That means continually asking whether workloads are running in the right environment, whether costs remain aligned with business value, whether data and security controls are keeping pace, and whether the architecture can support emerging requirements such as AI.</p>



<p class="wp-block-paragraph">AI makes these questions even more important. Scaling AI and advanced analytics introduces significant demands around compute, data architecture, governance, security, integration, and cost. Simply adding more cloud capacity is not a strategy.</p>



<h3 class="wp-block-heading">The Importance of Governance and Discipline</h3>



<p class="wp-block-paragraph">The next stage of cloud maturity requires stronger operational and financial discipline.</p>



<p class="wp-block-paragraph">Organizations need greater visibility into cloud consumption and costs, clear architectural standards, strong cybersecurity controls, effective observability, and mature data governance. Cloud decisions should ultimately be tied to measurable business outcomes rather than technology adoption for its own sake.</p>



<p class="wp-block-paragraph">The goal is not to become “more cloud.” The goal is to create an adaptable technology architecture that allows the business to move faster while maintaining the appropriate balance of cost, resilience, security, and control.</p>



<p class="wp-block-paragraph">That distinction will become increasingly important as AI accelerates the demands being placed on enterprise technology environments.</p>



<p class="wp-block-paragraph">Esther’s CIO.com article explores these challenges through perspectives from several technology leaders and is well worth the read.</p>



<p class="wp-block-paragraph"><strong>Read the full CIO.com article:</strong> <em><a href="https://www.cio.com/article/4178280/cloud-strategies-have-become-more-complicated-than-ever.html" target="_blank" rel="noreferrer noopener nofollow">Cloud Strategies Have Become More Complicated Than Ever</a></em></p>
<p>The post <a href="https://www.joshuabellendir.com/cloud-strategy-is-no-longer-just-an-infrastructure-decision/">Quoted in CIO.com | Cloud Strategy Is No Longer Just an Infrastructure Decision</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/cloud-strategy-is-no-longer-just-an-infrastructure-decision/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">55130</post-id>	</item>
		<item>
		<title>Celebrating Southern Nevada’s Technology Leaders: 2026 Top Tech Awards Nominations Are Open</title>
		<link>https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/</link>
					<comments>https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Wed, 27 May 2026 00:57:06 +0000</pubDate>
				<category><![CDATA[Leadership & Transformation]]></category>
		<category><![CDATA[Lifestyle & Community]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54230</guid>

					<description><![CDATA[<p>The 2026 Las Vegas Top Tech Awards nominations are now open. I’ve had the privilege of seeing this program from multiple angles: as a 2023 honoree, as a judge for the past two years, and now as a member of this year’s advisory board. Each year, Top Tech recognizes technology &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/">Celebrating Southern Nevada’s Technology Leaders: 2026 Top Tech Awards Nominations Are Open</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The 2026 <a href="https://www.linkedin.com/company/toptechvegas/"><strong>Las Vegas Top Tech Awards</strong></a> nominations are now open.<br><br>I’ve had the privilege of seeing this program from multiple angles: as a 2023 honoree, as a judge for the past two years, and now as a member of this year’s advisory board.<br><br>Each year, Top Tech recognizes technology leaders across Southern Nevada who are driving innovation, strengthening organizations, and creating measurable impact through technology.<br><br>If you know someone who deserves that recognition, nominate them before the June 25 deadline:<br><br><a href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FgdUtq7eW&amp;urlhash=aGMg&amp;mt=6ZLJj-2Uku8xmfMXrC95qS9qqBYbjR1FDAI2xNZtjdpLwqwFnhcOcYUTKytpAKYqMjkAmM-4ceYpa_Mq7waQ-GZ1tK9Vea3KrQmYK9_Tf2SF-5III7cSq02q&amp;isSdui=true" target="_blank" rel="noreferrer noopener"><strong>https://lnkd.in/gdUtq7eW</strong></a><br><br><a href="https://www.linkedin.com/search/results/all/?keywords=%23toptechvegas&amp;origin=HASH_TAG_FROM_FEED"><strong>#TopTechVegas</strong></a> <a href="https://www.linkedin.com/search/results/all/?keywords=%23ttavegas&amp;origin=HASH_TAG_FROM_FEED"><strong>#TTAVegas</strong></a> <a href="https://www.linkedin.com/search/results/all/?keywords=%23lasvegastech&amp;origin=HASH_TAG_FROM_FEED"><strong>#LasVegasTech</strong></a> <a href="https://www.linkedin.com/search/results/all/?keywords=%23cio&amp;origin=HASH_TAG_FROM_FEED"><strong>#CIO</strong></a> <a href="https://www.linkedin.com/search/results/all/?keywords=%23technologyleadership&amp;origin=HASH_TAG_FROM_FEED"><strong>#TechnologyLeadership</strong></a> <a href="https://www.linkedin.com/search/results/all/?keywords=%23innovation&amp;origin=HASH_TAG_FROM_FEED"><strong>#Innovation</strong></a></p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/feed/update/urn:li:activity:7465202722170953729/"></a></p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class=""><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:66.73721%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="54231" data-permalink="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/nominations-are-now-open/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open.jpg?fit=1200%2C1200&amp;ssl=1" data-orig-size="1200,1200" data-comments-opened="1" data-image-title="Nominations are Now Open" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open.jpg?fit=763%2C763&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 4 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open-1024x1024.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open-1024x1024.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open-1024x1024.jpg?strip=info&#038;w=1024&#038;ssl=1 1024w" alt="" data-height="1200" data-id="54231" data-link="https://www.joshuabellendir.com/?attachment_id=54231" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open-1024x1024.jpg" data-width="1200" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Nominations-are-Now-Open-1024x1024.jpg?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:33.26279%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="54232" data-permalink="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/nominate-a-tech-leader-today/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY.jpg?fit=1200%2C1200&amp;ssl=1" data-orig-size="1200,1200" data-comments-opened="1" data-image-title="NOMINATE A TECH LEADER TODAY!" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY.jpg?fit=763%2C763&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 4 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY-1024x1024.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY-1024x1024.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY-1024x1024.jpg?strip=info&#038;w=1024&#038;ssl=1 1024w" alt="" data-height="1200" data-id="54232" data-link="https://www.joshuabellendir.com/?attachment_id=54232" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY-1024x1024.jpg" data-width="1200" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/NOMINATE-A-TECH-LEADER-TODAY-1024x1024.jpg?ssl=1" data-amp-layout="responsive"/></figure><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="54233" data-permalink="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/know-a-tech-leader/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader.jpg?fit=1200%2C1200&amp;ssl=1" data-orig-size="1200,1200" data-comments-opened="1" data-image-meta="{&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Know a Tech Leader" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader.jpg?fit=763%2C763&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 3 of 4 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader-1024x1024.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader-1024x1024.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader-1024x1024.jpg?strip=info&#038;w=1024&#038;ssl=1 1024w" alt="" data-height="1200" data-id="54233" data-link="https://www.joshuabellendir.com/?attachment_id=54233" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader-1024x1024.jpg" data-width="1200" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/Know-a-Tech-Leader-1024x1024.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:100.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="54234" data-permalink="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/lv-how-to-nominate-1/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1.jpg?fit=1200%2C1200&amp;ssl=1" data-orig-size="1200,1200" data-comments-opened="1" data-image-title="LV How to Nominate (1)" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1.jpg?fit=763%2C763&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 4 of 4 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1-1024x1024.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1-1024x1024.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1-1024x1024.jpg?strip=info&#038;w=1024&#038;ssl=1 1024w" alt="" data-height="1200" data-id="54234" data-link="https://www.joshuabellendir.com/?attachment_id=54234" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1-1024x1024.jpg" data-width="1200" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/LV-How-to-Nominate-1-1024x1024.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div></div>
<p>The post <a href="https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/">Celebrating Southern Nevada’s Technology Leaders: 2026 Top Tech Awards Nominations Are Open</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/celebrating-southern-nevadas-technology-leaders-2026-top-tech-awards-nominations-are-open/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54230</post-id>	</item>
		<item>
		<title>Step-by-Step Guide: Give Your OpenClaw Agent a Phone Number and Voice Calling Capabilities</title>
		<link>https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/</link>
					<comments>https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Mon, 18 May 2026 03:59:48 +0000</pubDate>
				<category><![CDATA[Technology, AI & Cybersecurity]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54196</guid>

					<description><![CDATA[<p>This guide walks through setting up the OpenClaw Voice Call plugin with Twilio, ngrok, and OpenAI realtime voice so your agent can place and receive phone calls. The basic architecture is: What You Need If you are using a Twilio trial account, Twilio may play a trial-account prompt before connecting &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/">Step-by-Step Guide: Give Your OpenClaw Agent a Phone Number and Voice Calling Capabilities</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This guide walks through setting up the OpenClaw Voice Call plugin with Twilio, ngrok, and OpenAI realtime voice so your agent can place and receive phone calls.</p>



<p class="wp-block-paragraph">The basic architecture is:</p>



<ul class="wp-block-list">
<li>Twilio provides the phone number and call transport.</li>



<li>OpenClaw runs the local voice-call webhook.</li>



<li>ngrok exposes that local webhook to Twilio over a public HTTPS URL.</li>



<li>OpenAI realtime voice makes the call behave like a live conversation.</li>
</ul>



<h1 class="wp-block-heading">What You Need</h1>



<ul class="wp-block-list">
<li>A working OpenClaw install</li>



<li>A Twilio account</li>



<li>A Twilio voice-capable phone number</li>



<li>Your Twilio Account SID and Auth Token</li>



<li>An ngrok account and auth token</li>



<li>OpenAI/OpenClaw auth capable of using OpenAI realtime voice</li>
</ul>



<p class="wp-block-paragraph">If you are using a Twilio trial account, Twilio may play a trial-account prompt before connecting the call. During testing, press the key Twilio asks for so the call continues into OpenClaw.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 1. Get A Twilio Phone Number</h1>



<p class="wp-block-paragraph">Create or log into your Twilio account: https://console.twilio.com/dashboard</p>



<p class="wp-block-paragraph">From the Twilio dashboard, find or purchase a voice-capable phone number.</p>



<p class="wp-block-paragraph">You will need:</p>



<ul class="wp-block-list">
<li>Twilio phone number</li>



<li>Twilio Account SID</li>



<li>Twilio Auth Token</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 2. Enable The Voice Call Plugin In OpenClaw</h1>



<p class="wp-block-paragraph">Run the OpenClaw onboarding/configuration wizard. Launch the terminal app and run the following command:</p>



<pre class="wp-block-code"><code>openclaw onboard</code></pre>



<p class="wp-block-paragraph"> Enable the Voice Call plugin under the plugin/skills section of the onboarding wizard.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="299" height="152" data-attachment-id="54205" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-56/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-54.png?fit=299%2C152&amp;ssl=1" data-orig-size="299,152" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-54.png?fit=299%2C152&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-54.png?resize=299%2C152&#038;ssl=1" alt="" class="wp-image-54205"/></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="344" height="249" data-attachment-id="54207" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-57/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-55.png?fit=344%2C249&amp;ssl=1" data-orig-size="344,249" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-55.png?fit=344%2C249&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-55.png?resize=344%2C249&#038;ssl=1" alt="" class="wp-image-54207" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-55.png?w=344&amp;ssl=1 344w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-55.png?resize=300%2C217&amp;ssl=1 300w" sizes="auto, (max-width: 344px) 100vw, 344px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select Twilio as your provider</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="414" height="200" data-attachment-id="54208" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-58/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-56.png?fit=414%2C200&amp;ssl=1" data-orig-size="414,200" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-56.png?fit=414%2C200&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-56.png?resize=414%2C200&#038;ssl=1" alt="" class="wp-image-54208" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-56.png?w=414&amp;ssl=1 414w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-56.png?resize=300%2C145&amp;ssl=1 300w" sizes="auto, (max-width: 414px) 100vw, 414px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">When prompted for the Twilio phone number, enter your Twilio number in E.164 format (e.g., +13101112222) in the From Number field</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="418" height="162" data-attachment-id="54209" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-59/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-57.png?fit=418%2C162&amp;ssl=1" data-orig-size="418,162" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-57.png?fit=418%2C162&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-57.png?resize=418%2C162&#038;ssl=1" alt="" class="wp-image-54209" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-57.png?w=418&amp;ssl=1 418w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-57.png?resize=300%2C116&amp;ssl=1 300w" sizes="auto, (max-width: 418px) 100vw, 418px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">When prompted for inbound policy, start with:</p>



<pre class="wp-block-code"><code>allowlist</code></pre>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="236" height="93" data-attachment-id="54210" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-60/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-58.png?fit=236%2C93&amp;ssl=1" data-orig-size="236,93" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-58.png?fit=236%2C93&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-58.png?resize=236%2C93&#038;ssl=1" alt="" class="wp-image-54210"/></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Then add only your own phone number to the allowlist. This prevents random callers from reaching your agent while you are testing.</p>



<p class="wp-block-paragraph">When prompted for the Twilio Account SID, paste the Account SID from the Twilio dashboard.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="51" data-attachment-id="54211" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-61/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?fit=468%2C51&amp;ssl=1" data-orig-size="468,51" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?fit=468%2C51&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?resize=468%2C51&#038;ssl=1" alt="" class="wp-image-54211" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?resize=300%2C33&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-59.png?resize=449%2C49&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">After you provide the SID and hit enter, you will receive a sensitive field notice, like below. You will need to run this after we complete the onboarding wizard.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="90" data-attachment-id="54212" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-62/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?fit=468%2C90&amp;ssl=1" data-orig-size="468,90" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?fit=468%2C90&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?resize=468%2C90&#038;ssl=1" alt="" class="wp-image-54212" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?resize=300%2C58&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-60.png?resize=449%2C86&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="59" data-attachment-id="54213" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-63/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?fit=468%2C59&amp;ssl=1" data-orig-size="468,59" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?fit=468%2C59&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?resize=468%2C59&#038;ssl=1" alt="" class="wp-image-54213" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?resize=300%2C38&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-61.png?resize=449%2C57&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select conversation as the default call mode.</p>



<p class="wp-block-paragraph">If the wizard asks for webhook host/port before ngrok is configured, use local values for now:</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="84" data-attachment-id="54214" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-64/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?fit=468%2C84&amp;ssl=1" data-orig-size="468,84" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?fit=468%2C84&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?resize=468%2C84&#038;ssl=1" alt="" class="wp-image-54214" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?resize=300%2C54&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-62.png?resize=449%2C81&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="80" data-attachment-id="54215" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-65/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?fit=468%2C80&amp;ssl=1" data-orig-size="468,80" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?fit=468%2C80&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?resize=468%2C80&#038;ssl=1" alt="" class="wp-image-54215" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?resize=300%2C51&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-63.png?resize=449%2C77&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<pre class="wp-block-code"><code>Webhook host: 127.0.0.1<br>Webhook port: 3334</code></pre>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="54" data-attachment-id="54216" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-66/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?fit=468%2C54&amp;ssl=1" data-orig-size="468,54" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?fit=468%2C54&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?resize=468%2C54&#038;ssl=1" alt="" class="wp-image-54216" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?resize=300%2C35&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-64.png?resize=449%2C52&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">For session scope, select per-phone. This is so the conversation continues across calls. You would use per-call if you were configuring this as a call center, where each conversation starts fresh with each call.</p>



<pre class="wp-block-code"><code>Select per-phone</code></pre>



<p class="wp-block-paragraph">That should have been the last question. Finish the wizard. If it asks how you want to launch/hatch the bot and you are not ready yet, choose the “do this later” option.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 3. Add The Twilio Auth Token</h1>



<p class="wp-block-paragraph">After the wizard completes, add your Twilio Auth Token:</p>



<pre class="wp-block-code"><code>openclaw config set plugins.entries.voice-call.config.twilio.authToken &lt;TWILIO_AUTH_TOKEN&gt;</code></pre>



<p class="wp-block-paragraph">Replace &lt;TWILIO_AUTH_TOKEN&gt; with the token from your Twilio dashboard.</p>



<p class="wp-block-paragraph">Do not publish this token in screenshots, blog comments, GitHub issues, or logs.</p>



<p class="wp-block-paragraph">Restart the OpenClaw Gateway:</p>



<pre class="wp-block-code"><code>openclaw gateway restart</code></pre>



<p class="wp-block-paragraph">Then check the Voice Call plugin setup by running this command:</p>



<pre class="wp-block-code"><code>openclaw voicecall setup</code></pre>



<p class="wp-block-paragraph">You want the setup checks to pass before moving on. You will most likely notice that it falls the webhook check. You should see something similar to the below screenshot. Which is expected. We will configure the webhook in step 4.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="468" height="74" data-attachment-id="54218" data-permalink="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/image-68/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?fit=468%2C74&amp;ssl=1" data-orig-size="468,74" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?fit=468%2C74&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?resize=468%2C74&#038;ssl=1" alt="" class="wp-image-54218" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?w=468&amp;ssl=1 468w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?resize=300%2C47&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-66.png?resize=449%2C71&amp;ssl=1 449w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 4. Configure ngrok For The Public Webhook</h1>



<p class="wp-block-paragraph">Twilio cannot reach a webhook on 127.0.0.1 from the public internet. Your local OpenClaw instance needs a public HTTPS URL that forwards to the local voice-call webhook. That is what ngrok provides.</p>



<p class="wp-block-paragraph">Create an ngrok account and find your auth token here: https://dashboard.ngrok.com/get-started/your-authtoken</p>



<p class="wp-block-paragraph">If you have a reserved ngrok domain, use it. A stable domain is much easier than updating Twilio every time ngrok starts.</p>



<p class="wp-block-paragraph">You can ask your OpenClaw agent to configure ngrok with this prompt:</p>



<pre class="wp-block-preformatted">Help me configure the OpenClaw voice-call plugin webhook using ngrok.<br><br>Please do the following:<br><br>1. Inspect my OpenClaw config and determine the voice-call webhook server port/path.<br>2. Check whether ngrok is already installed and available to the Gateway process.<br>3. If ngrok is not installed, install the standalone ngrok binary as the standard OpenClaw user, not via admin Homebrew, unless my environment clearly uses a different safe pattern.<br>4. Make sure the Gateway launch/service environment can find the ngrok binary after restart.<br>5. Ask me for my ngrok auth token if you need it. Do not print it back or store it in memory/log notes.<br>6. Configure plugins.entries.voice-call.config.tunnel.provider = "ngrok".<br>7. If I have a reserved ngrok domain, configure it as plugins.entries.voice-call.config.tunnel.ngrokDomain.<br>8. Restart the OpenClaw Gateway.<br>9. Verify the setup with openclaw voicecall setup.<br>10. Show me the final public webhook URL I should use for Twilio, usually:<br>https://&lt;my-ngrok-domain>/voice/webhook<br><br>Be careful not to delete files or run destructive commands. If you modify config files, summarize exactly what changed and confirm that the final setup check passes.</pre>



<p class="wp-block-paragraph">After this step, your public webhook should look like:</p>



<pre class="wp-block-preformatted"><a href="https://your-ngrok-domain.ngrok-free.dev/voice/webhook">https://your-ngrok-domain.ngrok-free.dev/voice/webhook</a></pre>



<h1 class="wp-block-heading">Step 5. Update The Twilio Webhook</h1>



<p class="wp-block-paragraph">In the Twilio console, open your Twilio phone number settings. Look for the Voice webhook section.</p>



<p class="wp-block-paragraph">If it still points at Twilio’s demo app, replace it with your OpenClaw ngrok webhook:</p>



<pre class="wp-block-preformatted"><a href="https://your-ngrok-domain.ngrok-free.dev/voice/webhook">https://your-ngrok-domain.ngrok-free.dev/voice/webhook</a></pre>



<p class="wp-block-paragraph">Use HTTP POST.</p>



<p class="wp-block-paragraph">This is especially important for inbound calls. For outbound calls, OpenClaw can provide a per-call webhook URL through the Twilio API, but it is still worth making the Twilio number configuration match your OpenClaw webhook.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 6. Enable OpenAI Realtime Voice</h1>



<p class="wp-block-paragraph">This was the key fix in my setup.</p>



<p class="wp-block-paragraph">The default Voice Call conversation path may use short Twilio TwiML/Gather redirects. In my testing, outbound calls would ring and answer, but then immediately complete. Twilio showed the call as successful, but the duration was 0 seconds.</p>



<p class="wp-block-paragraph">The useful Twilio error was:</p>



<pre class="wp-block-preformatted">21220: Call is not in-progress. Cannot redirect.</pre>



<p class="wp-block-paragraph">That meant OpenClaw was trying to redirect/update the live call after Twilio had already marked it completed.</p>



<p class="wp-block-paragraph">The fix was to enable realtime voice mode for the Voice Call plugin. This changes the call from a short TwiML redirect flow into a live Twilio Media Stream connected to OpenAI realtime voice.</p>



<p class="wp-block-paragraph">Example config shape:</p>



<pre class="wp-block-code"><code>plugins.entries.voice-call.config.realtime.enabled = true<br>plugins.entries.voice-call.config.realtime.provider = "openai"<br>plugins.entries.voice-call.config.realtime.providers.openai.model = "gpt-realtime-2"<br>plugins.entries.voice-call.config.realtime.providers.openai.voice = "cedar"<br>plugins.entries.voice-call.config.realtime.consultPolicy = "always"</code></pre>



<p class="wp-block-paragraph">Your agent should have configured this portion for you with the above prompt, but you can check by restarting the gateway (openclaw gateway restart) and then verify by running this command:</p>



<pre class="wp-block-code"><code>openclaw voicecall setup</code></pre>



<p class="wp-block-paragraph">You want to see:</p>



<pre class="wp-block-code"><code>OK mode: Realtime voice enabled (openai)</code></pre>



<p class="wp-block-paragraph">If you don&#8217;t see openai configured, simply ask your agent to configure the voice call plugin with the OpenAI realtime voice.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 7. Tune Realtime Voice Behavior</h1>



<p class="wp-block-paragraph">Once realtime voice is working, you may notice that the assistant gets interrupted too easily. That is usually barge-in behavior: the realtime model hears input audio and cancels its current response so the caller can speak.</p>



<p class="wp-block-paragraph">That is useful, but it can be too sensitive on phone audio.</p>



<p class="wp-block-paragraph">This conservative tuning worked better for my setup:</p>



<pre class="wp-block-code"><code>interruptResponseOnInputAudio: false<br>vadThreshold: 0.65<br>silenceDurationMs: 650<br>prefixPaddingMs: 300<br>minBargeInAudioEndMs: 800</code></pre>



<p class="wp-block-paragraph">What these do:</p>



<ul class="wp-block-list">
<li>interruptResponseOnInputAudio: false makes the assistant less likely to stop talking immediately when it hears noise.</li>



<li>vadThreshold: 0.65 makes speech detection less sensitive.</li>



<li>silenceDurationMs: 650 waits a little longer before deciding your turn is finished.</li>



<li>prefixPaddingMs: 300 preserves a little audio before detected speech starts.</li>



<li>minBargeInAudioEndMs: 800 prevents extremely early interruptions.</li>
</ul>



<p class="wp-block-paragraph">The tradeoff is that the conversation may feel slightly less instant, but it is usually more stable.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 8. Test An Outbound Call</h1>



<p class="wp-block-paragraph">Place a test call:</p>



<pre class="wp-block-code"><code>openclaw voicecall call --to "+1YOURNUMBER" --mode conversation --message "Hello, this is a test call from my OpenClaw agent."</code></pre>



<p class="wp-block-paragraph">If you are on a Twilio trial account, listen for the Twilio prompt and press the requested key to continue.</p>



<p class="wp-block-paragraph">During a successful realtime call, OpenClaw should show transcripts and realtime events.</p>



<p class="wp-block-paragraph">Check active call status:</p>



<pre class="wp-block-code"><code>openclaw voicecall status --json</code></pre>



<p class="wp-block-paragraph">Or inspect a specific call:</p>



<pre class="wp-block-code"><code>openclaw voicecall status --call-id &lt;CALL_ID&gt;</code></pre>



<p class="wp-block-paragraph">Or even better, simply ask your OpenClaw agent to call you via sending him a message via Telegram.</p>



<p class="wp-block-paragraph">Congratulations! You have now configured your agent with a phone number and voice calling capabilities. You can have it call you on a schedule to provide you summaries of what it&#8217;s working on. You can call it and talk through your to do tasks on your drive home. You can even have it call a restaurant and make reservations for you. Yes, I tried it and although there can be some issues, it did work! Imagine all the restaurant staff taking calls from digital assistants trying to book a reservation. Yes, we are already there.  </p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Troubleshooting Scenarios</h1>



<p class="wp-block-paragraph">The below are some examples of road bumps I hit along the way. In case you come across the same. I highly recommend you to leverage your agent as you work through these. In most cases, your agent will be able to update it&#8217;s own config to address these issues.</p>



<h4 class="wp-block-heading">1. The call rings, then immediately hangs up</h4>



<p class="wp-block-paragraph">Check Twilio call logs. If the call shows Completed with 0 sec duration, inspect the event details.</p>



<p class="wp-block-paragraph">If you see this, enable realtime voice mode:</p>



<pre class="wp-block-preformatted">21220: Call is not in-progress. Cannot redirect.</pre>



<p class="wp-block-paragraph">The default redirect flow is likely completing before OpenClaw can move the call into listening mode.</p>



<h4 class="wp-block-heading">2. Twilio plays an opening message</h4>



<p class="wp-block-paragraph">That is usually the Twilio trial-account prompt. Press the key Twilio asks for to continue the call. For a clean production experience, upgrade the Twilio account so trial prompts are removed.</p>



<h4 class="wp-block-heading">3. The Twilio webhook points to the demo app</h4>



<p class="wp-block-paragraph">Replace the demo webhook with your ngrok webhook and use HTTP POST:</p>



<pre class="wp-block-preformatted"><a href="https://your-ngrok-domain.ngrok-free.dev/voice/webhook">https://your-ngrok-domain.ngrok-free.dev/voice/webhook</a></pre>



<h4 class="wp-block-heading">4. OpenClaw and the plugin versions are out of sync</h4>



<p class="wp-block-paragraph">If the Voice Call plugin or Gateway behaves strangely after install, update OpenClaw from the correct account/environment for your machine:</p>



<pre class="wp-block-code"><code>openclaw update<br>openclaw gateway restart<br>openclaw doctor<br>openclaw doctor --fix<br>openclaw voicecall setup</code></pre>



<h4 class="wp-block-heading">5. The wrong phone number is configured</h4>



<p class="wp-block-paragraph">Use E.164 format. For US numbers, include +1. If you accidentally entered a number without the country code, update the config (edit the phone number in your openclaw.json file) and rerun the following command to confirm:</p>



<pre class="wp-block-code"><code>openclaw voicecall setup</code></pre>



<h4 class="wp-block-heading">6. ngrok works manually, but the Gateway cannot find it</h4>



<p class="wp-block-paragraph">If ngrok was installed into a user-local path, make sure the Gateway service environment includes that path. This matters when the Gateway runs through launchd or another service manager instead of your interactive shell.</p>



<p class="wp-block-paragraph">After changing the service environment, restart the Gateway and rerun:</p>



<pre class="wp-block-code"><code>openclaw voicecall setup</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Final Working Setup</h1>



<ul class="wp-block-list">
<li>Twilio regular voice-capable phone number</li>



<li>Twilio Voice webhook pointed to the ngrok public URL</li>



<li>OpenClaw Voice Call plugin using ngrok tunnel</li>



<li>OpenAI realtime voice enabled in the Voice Call plugin</li>



<li>Gateway restarted after config changes</li>



<li>openclaw voicecall setup passing</li>
</ul>



<p class="wp-block-paragraph">Once those pieces were in place, outbound calls connected, the realtime bridge started, and OpenClaw transcribed live caller audio.</p>



<h1 class="wp-block-heading">Security Notes</h1>



<p class="wp-block-paragraph">Keep these stored in a password manager and never share:</p>



<ul class="wp-block-list">
<li>Twilio Auth Token</li>



<li>ngrok Auth Token</li>



<li>Telegram bot token</li>



<li>OpenClaw Gateway auth token</li>



<li>Full config files unless secrets are redacted</li>
</ul>



<p class="wp-block-paragraph">Use allowlists while testing inbound calls. Open voice access is powerful; treat it like giving someone a live phone line to your agent.</p>
<p>The post <a href="https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/">Step-by-Step Guide: Give Your OpenClaw Agent a Phone Number and Voice Calling Capabilities</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/step-by-step-guide-give-your-openclaw-agent-a-phone-number-and-voice-calling-capabilities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54196</post-id>	</item>
		<item>
		<title>How to Securely Run OpenClaw on a Mac Mini (Step-by-Step Guide)</title>
		<link>https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/</link>
					<comments>https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Bellendir]]></dc:creator>
		<pubDate>Thu, 14 May 2026 02:40:19 +0000</pubDate>
				<category><![CDATA[Technology, AI & Cybersecurity]]></category>
		<guid isPermaLink="false">https://www.joshuabellendir.com/?p=54073</guid>

					<description><![CDATA[<p>What is OpenClaw? OpenClaw is an open-source AI agent framework that allows you to run a persistent, self-hosted AI assistant locally on your own hardware. Unlike traditional chatbots that only respond within a browser window, OpenClaw can interact with your operating system, manage files, execute commands, automate workflows, and integrate &#8230;</p>
<p>The post <a href="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/">How to Securely Run OpenClaw on a Mac Mini (Step-by-Step Guide)</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What is OpenClaw?</h2>



<p class="wp-block-paragraph">OpenClaw is an open-source AI agent framework that allows you to run a persistent, self-hosted AI assistant locally on your own hardware. Unlike traditional chatbots that only respond within a browser window, OpenClaw can interact with your operating system, manage files, execute commands, automate workflows, and integrate with external services like Telegram, WhatsApp, GitHub, and Google Workspace.</p>



<p class="wp-block-paragraph">What makes OpenClaw particularly interesting is that it combines modern large language models with long-running agent behavior and local infrastructure control. In practical terms, this means you can build an AI assistant that operates more like a lightweight autonomous operator than a simple chatbot.</p>



<p class="wp-block-paragraph">For many people, the appeal of OpenClaw is control:</p>



<ul class="wp-block-list">
<li>Your agent runs on hardware you own</li>



<li>You decide what services it can access</li>



<li>You control the security boundaries</li>



<li>You can extend it with skills, plugins, and automation workflows</li>
</ul>



<p class="wp-block-paragraph">But that same level of capability also introduces risk.</p>



<p class="wp-block-paragraph">An AI agent with filesystem access, shell access, internet connectivity, and persistent runtime behavior should be treated carefully. Unfortunately, many setup guides focus heavily on functionality while spending very little time discussing operational security or least-privilege deployment practices.</p>



<p class="wp-block-paragraph">This guide focuses specifically on deploying OpenClaw securely on a Mac Mini using:</p>



<ul class="wp-block-list">
<li>a dedicated non-admin user account</li>



<li>Local-only gateway binding (<code>127.0.0.1</code>)</li>



<li>hardened macOS security settings</li>



<li>Telegram allowlists</li>



<li>persistent background services</li>



<li>post-installation security auditing</li>
</ul>



<p class="wp-block-paragraph">The goal is not enterprise-grade hardening, but rather a practical and security-conscious deployment suitable for hobbyists, developers, technologists, and home lab users who want to experiment with AI agents responsibly.</p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class=""><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:100.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="54154" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/openclaw-mac-mini-security-architecture-diagram-2/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1.jpg?fit=1536%2C1024&amp;ssl=1" data-orig-size="1536,1024" data-comments-opened="1" data-image-title="OpenClaw Mac Mini Security Architecture Diagram" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1.jpg?fit=763%2C509&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 1 in full-screen" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1-1024x683.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1-1024x683.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1-1024x683.jpg?strip=info&#038;w=1024&#038;ssl=1 1024w" alt="" data-height="1024" data-id="54154" data-link="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/openclaw-mac-mini-security-architecture-diagram-2/" data-url="https://www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1-1024x683.jpg" data-width="1536" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/OpenClaw-Mac-Mini-Security-Architecture-Diagram-1-1024x683.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div></div>



<p class="wp-block-paragraph"><em>Figure 1: High-level security architecture for a hardened OpenClaw deployment on macOS using least privilege principles and local-only gateway exposure.</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Recommended Hardware</h2>



<p class="wp-block-paragraph">For a smooth experience, I recommend (at minimum):</p>



<ul class="wp-block-list">
<li>Mac Mini M4</li>



<li>16GB RAM minimum</li>



<li>256GB SSD minimum</li>
</ul>



<p class="wp-block-paragraph">Apple Silicon performs exceptionally well for local AI agent workloads while maintaining very low power consumption.</p>



<p class="wp-block-paragraph">You should also plan for:</p>



<ul class="wp-block-list">
<li>1–3 hours of setup time</li>



<li>An LLM provider account (OpenAI, Anthropic, Gemini, etc.)</li>



<li>A Telegram account (for this guide)</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Why Run OpenClaw Under a Dedicated User Account?</h2>



<p class="wp-block-paragraph">OpenClaw is capable of:</p>



<ul class="wp-block-list">
<li>Reading files</li>



<li>Executing shell commands</li>



<li>Connecting to external services</li>



<li>Automating workflows</li>



<li>Running continuously in the background</li>
</ul>



<p class="wp-block-paragraph">For that reason, I strongly recommend running it under a dedicated standard (non-admin) macOS account rather than your primary administrator account.</p>



<p class="wp-block-paragraph">This limits the blast radius if:</p>



<ul class="wp-block-list">
<li>The agent misbehaves</li>



<li>A plugin is compromised</li>



<li>Credentials leak</li>



<li>Remote access is abused</li>



<li>An automation accidentally performs destructive actions</li>
</ul>



<p class="wp-block-paragraph">Treat AI agents the same way you would treat any long-running automation service or daemon: least privilege should be the default.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 1: Update macOS</h2>



<p class="wp-block-paragraph">Before beginning, make sure your Mac Mini is fully updated.</p>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → General → Software Update
</pre>



<p class="wp-block-paragraph">Install all available updates before continuing.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h1 class="wp-block-heading">Step 2: Create a Dedicated Standard User</h1>



<p class="wp-block-paragraph">Create a dedicated standard (non-admin) user account that will run the OpenClaw agent.</p>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → Users &amp; Groups → Add User
</pre>



<p class="wp-block-paragraph">Create:</p>



<ul class="wp-block-list">
<li>Account Type: Standard</li>



<li>Suggested Username: <code>openclaw</code></li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="473" height="428" data-attachment-id="54162" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-36/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?fit=473%2C428&amp;ssl=1" data-orig-size="473,428" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?fit=473%2C428&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?resize=473%2C428&#038;ssl=1" alt="" class="wp-image-54162" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?w=473&amp;ssl=1 473w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?resize=300%2C271&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-34.png?resize=387%2C350&amp;ssl=1 387w" sizes="auto, (max-width: 473px) 100vw, 473px" /></figure>



<p class="wp-block-paragraph">This user account will:</p>



<ul class="wp-block-list">
<li>Run the OpenClaw gateway</li>



<li>Own the workspace files</li>



<li>Limit administrative access</li>
</ul>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>All software installation steps below should initially be performed from your administrator account. We will switch to the dedicated standard user later when onboarding the OpenClaw agent itself.</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 3: Configure macOS Power Settings</h2>



<p class="wp-block-paragraph">Since OpenClaw is designed to run continuously, we want the Mac Mini to remain awake and recover automatically after power outages.</p>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → Energy
</pre>



<p class="wp-block-paragraph">Enable:</p>



<ul class="wp-block-list">
<li>Prevent automatic sleeping when the display is off</li>



<li>Start up automatically after a power failure</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="501" height="307" data-attachment-id="54164" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-37/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?fit=501%2C307&amp;ssl=1" data-orig-size="501,307" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?fit=501%2C307&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?resize=501%2C307&#038;ssl=1" alt="" class="wp-image-54164" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?w=501&amp;ssl=1 501w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?resize=300%2C184&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-35.png?resize=449%2C275&amp;ssl=1 449w" sizes="auto, (max-width: 501px) 100vw, 501px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">This ensures:</p>



<ul class="wp-block-list">
<li>The system stays online</li>



<li>The agent remains accessible</li>



<li>Services recover automatically after outages</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 4: Enable FileVault Disk Encryption</h2>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → Privacy &amp; Security → FileVault
</pre>



<p class="wp-block-paragraph">Enable:</p>



<ul class="wp-block-list">
<li>FileVault</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="496" height="320" data-attachment-id="54109" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-16/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?fit=496%2C320&amp;ssl=1" data-orig-size="496,320" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?fit=496%2C320&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?resize=496%2C320&#038;ssl=1" alt="" class="wp-image-54109" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?w=496&amp;ssl=1 496w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?resize=300%2C194&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-12.png?resize=449%2C290&amp;ssl=1 449w" sizes="auto, (max-width: 496px) 100vw, 496px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">This encrypts the disk and protects local data if the machine is lost or stolen.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 5: Configure the macOS Firewall</h2>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → Network → Firewall
</pre>



<p class="wp-block-paragraph">Enable:</p>



<ul class="wp-block-list">
<li>Firewall</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="502" height="219" data-attachment-id="54161" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-35/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?fit=502%2C219&amp;ssl=1" data-orig-size="502,219" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?fit=502%2C219&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?resize=502%2C219&#038;ssl=1" alt="" class="wp-image-54161" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?w=502&amp;ssl=1 502w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?resize=300%2C131&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-33.png?resize=449%2C196&amp;ssl=1 449w" sizes="auto, (max-width: 502px) 100vw, 502px" /></figure>



<p class="wp-block-paragraph">Then click:</p>



<pre class="wp-block-preformatted">Options...
</pre>



<p class="wp-block-paragraph">Enable:</p>



<ul class="wp-block-list">
<li>Stealth Mode</li>
</ul>



<p class="wp-block-paragraph">Depending on your environment, you may also choose to:</p>



<ul class="wp-block-list">
<li>Block all incoming connections</li>
</ul>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Note<br>Blocking all incoming connections can interfere with some remote management or VNC workflows. If you enable it temporarily during setup, remember to re-test connectivity afterward.</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 6: Install Required Software</h2>



<p class="wp-block-paragraph">We now need to install the following:</p>



<ul class="wp-block-list">
<li>Homebrew</li>



<li>Node.js</li>



<li>npm (Node Package Manager) &#8211; this will install as part of the Node.js installation</li>
</ul>



<p class="wp-block-paragraph">All of these steps should still be performed from your administrator account.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Install Homebrew</h2>



<p class="wp-block-paragraph">Open the Terminal app and run:</p>



<pre class="wp-block-code"><code>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</code></pre>



<p class="wp-block-paragraph">The installation may take several minutes.&nbsp;</p>



<p class="wp-block-paragraph">At the end of the installation, Homebrew will provide commands to add itself to your shell path.</p>



<p class="wp-block-paragraph">It should look something like this:</p>



<pre class="wp-block-code"><code>echo &gt;&gt; /Users/YOURUSERNAME/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' &gt;&gt; /Users/YOURUSERNAME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"</code></pre>



<p class="wp-block-paragraph">Run the commands provided by the installer for your environment.</p>



<p class="wp-block-paragraph">Verify the installation:</p>



<pre class="wp-block-code"><code>brew --version</code></pre>



<p class="wp-block-paragraph">If successful, Homebrew will return its installed version number.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Install Node.js</h2>



<p class="wp-block-paragraph">Install Node.js using Homebrew:</p>



<pre class="wp-block-code"><code>brew install node
</code></pre>



<p class="wp-block-paragraph">Verify the installation:</p>



<pre class="wp-block-code"><code>node --version
</code></pre>



<p class="wp-block-paragraph">OpenClaw currently requires Node.js v22 or later.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Install OpenClaw</h2>



<p class="wp-block-paragraph">Still under your administrator account, install OpenClaw globally:</p>



<pre class="wp-block-code"><code>npm install -g openclaw@latest</code></pre>



<p class="wp-block-paragraph">Verify the installation:</p>



<pre class="wp-block-code"><code>openclaw --version</code></pre>



<p class="wp-block-paragraph">At the time of writing, version <code>2026.01.29</code>&nbsp;was installed.</p>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>We are only installing OpenClaw from the administrator account.<br>The actual onboarding and runtime configuration will happen under the dedicated standard user account.</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Optional: Using Screen Sharing to Remote Into the Standard User Account (OpenClaw)</h2>



<p class="wp-block-paragraph">Instead of constantly logging in and out between the admin account and the <code>openclaw</code> account, we can remotely access the local standard user session via Mac’s built in Screen Sharing app. MacOS does not directly support local VNC loopback access out of the box, but we can create a workaround using SSH tunneling.</p>



<p class="wp-block-paragraph">This section is completely optional. If you prefer to just switch back and forth between your admin and standard user account, jump down to Step 7 to onboard your OpenClaw agent.</p>



<h3 class="wp-block-heading">Enable Screen Sharing and Remote Login</h3>



<p class="wp-block-paragraph">Go to:</p>



<pre class="wp-block-preformatted">System Settings → General
</pre>



<p class="wp-block-paragraph">Enable:</p>



<ul class="wp-block-list">
<li>Screen Sharing</li>



<li>Remote Login</li>
</ul>



<p class="wp-block-paragraph">For both settings (Screen Sharing and Remote Login):</p>



<ul class="wp-block-list">
<li>Add your standard user account (<code>openclaw</code>) to the allowed users list.</li>
</ul>



<p class="wp-block-paragraph">Example of Screen Sharing Settings:</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="439" height="314" data-attachment-id="54167" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-40/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-38.png?fit=439%2C314&amp;ssl=1" data-orig-size="439,314" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-38.png?fit=439%2C314&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-38.png?resize=439%2C314&#038;ssl=1" alt="" class="wp-image-54167" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-38.png?w=439&amp;ssl=1 439w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-38.png?resize=300%2C215&amp;ssl=1 300w" sizes="auto, (max-width: 439px) 100vw, 439px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">You can access these settings using the small <code>(i)</code> information button beside each option.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="482" height="730" data-attachment-id="54168" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-41/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?fit=482%2C730&amp;ssl=1" data-orig-size="482,730" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?fit=482%2C730&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?resize=482%2C730&#038;ssl=1" alt="" class="wp-image-54168" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?w=482&amp;ssl=1 482w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?resize=198%2C300&amp;ssl=1 198w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-39.png?resize=231%2C350&amp;ssl=1 231w" sizes="auto, (max-width: 482px) 100vw, 482px" /></figure>



<p class="wp-block-paragraph"></p>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>If the <code>openclaw</code> user is not explicitly added to both allowlists, authentication will fail later.</pre>



<h3 class="wp-block-heading">Create the SSH Tunnel</h3>



<p class="wp-block-paragraph">From your administrator account, open Terminal and run:</p>



<pre class="wp-block-code"><code>ssh -NL 5901:localhost:5900 openclaw@localhost</code></pre>



<p class="wp-block-paragraph">Replace:</p>



<ul class="wp-block-list">
<li><code>openclaw</code> with your standard username</li>
</ul>



<p class="wp-block-paragraph">If prompted:</p>



<ul class="wp-block-list">
<li>Accept the SSH connection</li>



<li>Enter the password for the standard user account</li>
</ul>



<p class="wp-block-paragraph">If successful, the terminal will appear to “hang”. This is expected behavior. Leave the terminal window open, as this is what is establishing the SSH tunnel. You need this active to connect via screen sharing.</p>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>If you don’t know your user’s short username, log into your user account and type “whoami” into a terminal window. It will respond with your user’s short username.</pre>



<h3 class="wp-block-heading">Connect Using Screen Sharing</h3>



<p class="wp-block-paragraph">Launch the macOS Screen Sharing app.</p>



<p class="wp-block-paragraph">Connect to:</p>



<pre class="wp-block-code"><code>vnc://localhost:5901</code></pre>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="437" height="141" data-attachment-id="54169" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-42/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?fit=437%2C141&amp;ssl=1" data-orig-size="437,141" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?fit=437%2C141&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?resize=437%2C141&#038;ssl=1" alt="" class="wp-image-54169" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?w=437&amp;ssl=1 437w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-40.png?resize=433%2C141&amp;ssl=1 433w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">When prompted for credentials, enter:</p>



<ul class="wp-block-list">
<li>Username: <code>openclaw</code></li>



<li>Password: your standard user password</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="441" height="271" data-attachment-id="54170" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-43/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-41.png?fit=441%2C271&amp;ssl=1" data-orig-size="441,271" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-41.png?fit=441%2C271&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-41.png?resize=441%2C271&#038;ssl=1" alt="" class="wp-image-54170" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-41.png?w=441&amp;ssl=1 441w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-41.png?resize=300%2C184&amp;ssl=1 300w" sizes="auto, (max-width: 441px) 100vw, 441px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong><em>Important:&nbsp;After entering your credentials, on the next pop up window, select “log in as yourself” and click connect.</em></strong></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="441" height="219" data-attachment-id="54172" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-45/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-43.png?fit=441%2C219&amp;ssl=1" data-orig-size="441,219" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-43.png?fit=441%2C219&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-43.png?resize=441%2C219&#038;ssl=1" alt="" class="wp-image-54172" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-43.png?w=441&amp;ssl=1 441w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-43.png?resize=300%2C149&amp;ssl=1 300w" sizes="auto, (max-width: 441px) 100vw, 441px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">You should now have a remote desktop session into the standard user account.</p>



<p class="wp-block-paragraph">This makes it easier to:</p>



<ul class="wp-block-list">
<li>Copy/paste commands</li>



<li>Manage onboarding</li>



<li>Switch between accounts</li>



<li>Monitor the agent</li>
</ul>



<p class="wp-block-paragraph">Once setup is complete, you can disable:</p>



<ul class="wp-block-list">
<li>Screen Sharing</li>



<li>Remote Login</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Step 7: Onboard the OpenClaw Agent</h2>



<p class="wp-block-paragraph"><em><strong>Important:&nbsp;The onboarding and configuration steps below should be performed from your standard non-admin user account (openclaw). You can either log into the “openclaw” standard user account or use the remote screen sharing method described in Step 6 above.</strong></em></p>



<p class="wp-block-paragraph">Before onboarding, verify OpenClaw is accessible via your standard user account (openclaw):</p>



<pre class="wp-block-code"><code>openclaw --version
</code></pre>



<p class="wp-block-paragraph">You should receive the installed version number.</p>



<p class="wp-block-paragraph">Now begin onboarding:</p>



<pre class="wp-block-code"><code>openclaw onboard
</code></pre>



<p class="wp-block-paragraph">This launches the onboarding wizard.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Recommended Onboarding Configuration</h2>



<p class="wp-block-paragraph">Below are the settings I recommend as of May 2026.</p>



<h3 class="wp-block-heading">OpenClaw Security Disclaimer</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="562" height="625" data-attachment-id="54173" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/screenshot-7/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?fit=562%2C625&amp;ssl=1" data-orig-size="562,625" data-comments-opened="1" data-image-meta="{&quot;caption&quot;:&quot;Screenshot&quot;,&quot;title&quot;:&quot;Screenshot&quot;}" data-image-title="Screenshot" data-image-description="" data-image-caption="&lt;p&gt;Screenshot&lt;/p&gt;
" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?fit=562%2C625&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?resize=562%2C625&#038;ssl=1" alt="" class="wp-image-54173" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?w=562&amp;ssl=1 562w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?resize=270%2C300&amp;ssl=1 270w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-44.jpg?resize=315%2C350&amp;ssl=1 315w" sizes="auto, (max-width: 562px) 100vw, 562px" /><figcaption class="wp-element-caption">Screenshot</figcaption></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Yes
</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Setup Mode</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="554" height="68" data-attachment-id="54175" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-47/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?fit=554%2C68&amp;ssl=1" data-orig-size="554,68" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?fit=554%2C68&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?resize=554%2C68&#038;ssl=1" alt="" class="wp-image-54175" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?w=554&amp;ssl=1 554w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-45.png?resize=449%2C55&amp;ssl=1 449w" sizes="auto, (max-width: 554px) 100vw, 554px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Manual
</pre>



<p class="wp-block-paragraph">This allows us to explicitly configure each setting.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">What Do You Want to Set Up?</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="559" height="68" data-attachment-id="54176" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-48/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?fit=559%2C68&amp;ssl=1" data-orig-size="559,68" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?fit=559%2C68&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?resize=559%2C68&#038;ssl=1" alt="" class="wp-image-54176" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?w=559&amp;ssl=1 559w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?resize=300%2C36&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-46.png?resize=449%2C55&amp;ssl=1 449w" sizes="auto, (max-width: 559px) 100vw, 559px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Local gateway (this machine)
</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Workspace Directory</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="553" height="56" data-attachment-id="54177" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-49/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?fit=553%2C56&amp;ssl=1" data-orig-size="553,56" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?fit=553%2C56&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?resize=553%2C56&#038;ssl=1" alt="" class="wp-image-54177" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?w=553&amp;ssl=1 553w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?resize=300%2C30&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-47.png?resize=449%2C45&amp;ssl=1 449w" sizes="auto, (max-width: 553px) 100vw, 553px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">/Users/openclaw/.openclaw/workspace</pre>



<p class="wp-block-paragraph">Hit enter to use the default suggested directory unless you have specific requirements.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Model / Authentication Provider</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="333" height="628" data-attachment-id="54138" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-28/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?fit=333%2C628&amp;ssl=1" data-orig-size="333,628" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?fit=333%2C628&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?resize=333%2C628&#038;ssl=1" alt="" class="wp-image-54138" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?w=333&amp;ssl=1 333w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?resize=159%2C300&amp;ssl=1 159w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-26.png?resize=186%2C350&amp;ssl=1 186w" sizes="auto, (max-width: 333px) 100vw, 333px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Choose your preferred LLM provider.&nbsp;</p>



<p class="wp-block-paragraph">Examples:</p>



<ul class="wp-block-list">
<li>OpenAI</li>



<li>Anthropic</li>



<li>Gemini</li>



<li>Grok</li>



<li>Codex</li>
</ul>



<p class="wp-block-paragraph">This guide is going to walk you through configuring OpenAI using the OAuth method, but feel free to use your preferred provider and follow the onscreen directions. Otherwise, let’s proceed with OpenAI.</p>



<p class="wp-block-paragraph">When I initially tested OpenClaw, I used the OpenAI API with the&nbsp;gpt-4o model (gpt-4o-mini is also a good choice if going with the API). It worked very well, but token usage can increase quickly depending on context size and agent activity. The OAuth method is a much cheaper alternative to the API.&nbsp;</p>



<p class="wp-block-paragraph">So for my second deployment of OpenClaw, I switched to OpenAI Codex OAuth.</p>



<p class="wp-block-paragraph">Since I already had a paid OpenAI subscription, this avoided API token management and additional usage costs. If you don’t have an OpenAI Pro subscription already, create an OpenAI account and upgrade to Pro for $20/month. Well worth it and is required for this setup.&nbsp;</p>



<p class="wp-block-paragraph">If using your OpenAI Pro Account (OAUTH):</p>



<ul class="wp-block-list">
<li>Select <code>OpenAI Codex</code></li>



<li>Authenticate via OAuth</li>



<li>Keep the default model (<code>gpt-5.5</code>)</li>
</ul>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="423" height="75" data-attachment-id="54137" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-27/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-25.png?fit=423%2C75&amp;ssl=1" data-orig-size="423,75" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-25.png?fit=423%2C75&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-25.png?resize=423%2C75&#038;ssl=1" alt="" class="wp-image-54137" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-25.png?w=423&amp;ssl=1 423w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-25.png?resize=300%2C53&amp;ssl=1 300w" sizes="auto, (max-width: 423px) 100vw, 423px" /></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="329" height="166" data-attachment-id="54136" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-26/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-24.png?fit=329%2C166&amp;ssl=1" data-orig-size="329,166" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-24.png?fit=329%2C166&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-24.png?resize=329%2C166&#038;ssl=1" alt="" class="wp-image-54136" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-24.png?w=329&amp;ssl=1 329w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-24.png?resize=300%2C151&amp;ssl=1 300w" sizes="auto, (max-width: 329px) 100vw, 329px" /></figure>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Gateway Configuration</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="349" height="213" data-attachment-id="54139" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-29/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-27.png?fit=349%2C213&amp;ssl=1" data-orig-size="349,213" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-27.png?fit=349%2C213&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-27.png?resize=349%2C213&#038;ssl=1" alt="" class="wp-image-54139" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-27.png?w=349&amp;ssl=1 349w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-27.png?resize=300%2C183&amp;ssl=1 300w" sizes="auto, (max-width: 349px) 100vw, 349px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Recommended settings:</p>



<pre class="wp-block-preformatted">Port: 18789<br>Bind: 127.0.0.1<br>Auth: Token mode<br>Tailscale exposure: Off</pre>



<p class="wp-block-paragraph">As shown in Figure 1 above, the OpenClaw gateway is intentionally bound to localhost (127.0.0.1) and isolated under a dedicated non-admin user account.</p>



<p class="wp-block-paragraph">For the token:</p>



<ul class="wp-block-list">
<li>Select Generate/store plaintext token</li>



<li>Leave the token field blank to auto-generate</li>
</ul>



<pre class="wp-block-preformatted"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>Binding to <code>127.0.0.1</code> is one of the most important security settings in this guide.<br>This prevents the gateway from listening publicly on your network interfaces.</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Configure Chat Channels</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="347" height="699" data-attachment-id="54142" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/screenshot-6/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?fit=347%2C699&amp;ssl=1" data-orig-size="347,699" data-comments-opened="1" data-image-meta="{&quot;caption&quot;:&quot;Screenshot&quot;,&quot;title&quot;:&quot;Screenshot&quot;}" data-image-title="Screenshot" data-image-description="" data-image-caption="&lt;p&gt;Screenshot&lt;/p&gt;
" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?fit=347%2C699&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?resize=347%2C699&#038;ssl=1" alt="" class="wp-image-54142" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?w=347&amp;ssl=1 347w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?resize=149%2C300&amp;ssl=1 149w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.jpg?resize=174%2C350&amp;ssl=1 174w" sizes="auto, (max-width: 347px) 100vw, 347px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Yes
</pre>



<p class="wp-block-paragraph">For this guide, we will use Telegram.</p>



<p class="wp-block-paragraph">Telegram is one of the easiest integrations to configure and works well for interacting with the agent remotely. Another popular channel to use would be WhatsApp, but the telegram setup is a bit easier, so we will go with that for now. You can always change this later by re-running the onboarding wizard.</p>



<h4 class="wp-block-heading">Create a Telegram Bot</h4>



<p class="wp-block-paragraph">Before we proceed with the channel setup using Telegram, we need to setup a Telegram Bot which will be used as the Telegram user for our OpenClaw agent. If you don’t already use Telegram, simply download the Telegram app and register a new account.</p>



<p class="wp-block-paragraph">Telegram has an official bot called the BotFather which is used to register Bots on the platform.</p>



<p class="wp-block-paragraph">Open the Telegram app and search for:</p>



<pre class="wp-block-code"><code>@BotFather
</code></pre>



<p class="wp-block-paragraph">Start a chat and run:</p>



<pre class="wp-block-code"><code>/newbot
</code></pre>



<p class="wp-block-paragraph">BotFather will ask for:</p>



<ul class="wp-block-list">
<li>A display name</li>



<li>A username ending in <code>bot</code></li>
</ul>



<p class="wp-block-paragraph">Once completed, BotFather will provide:</p>



<ul class="wp-block-list">
<li>A bot token</li>
</ul>



<p class="wp-block-paragraph">Save this token.</p>



<p class="wp-block-paragraph">Return to the OpenClaw onboarding wizard and select&nbsp;<strong>Telegram (Bot API)&nbsp;</strong>under the list of chat channels.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="541" height="351" data-attachment-id="54178" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-50/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?fit=541%2C351&amp;ssl=1" data-orig-size="541,351" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?fit=541%2C351&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?resize=541%2C351&#038;ssl=1" alt="" class="wp-image-54178" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?w=541&amp;ssl=1 541w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-48.png?resize=449%2C291&amp;ssl=1 449w" sizes="auto, (max-width: 541px) 100vw, 541px" /></figure>



<p class="wp-block-paragraph"></p>



<ul class="wp-block-list">
<li>Select “Enter Telegram bot token”</li>



<li>Paste the token</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="548" height="64" data-attachment-id="54179" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-51/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?fit=548%2C64&amp;ssl=1" data-orig-size="548,64" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?fit=548%2C64&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?resize=548%2C64&#038;ssl=1" alt="" class="wp-image-54179" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?w=548&amp;ssl=1 548w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?resize=300%2C35&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-49.png?resize=449%2C52&amp;ssl=1 449w" sizes="auto, (max-width: 548px) 100vw, 548px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Once you have successfully added the Telegram channel, select “Finished” on the select a channel option.</p>



<h4 class="wp-block-heading">Configure Telegram Access Restrictions</h4>



<p class="wp-block-paragraph">After adding Telegram, OpenClaw will display a warning about DM pairing access.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="552" height="141" data-attachment-id="54180" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-52/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?fit=552%2C141&amp;ssl=1" data-orig-size="552,141" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?fit=552%2C141&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?resize=552%2C141&#038;ssl=1" alt="" class="wp-image-54180" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?w=552&amp;ssl=1 552w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?resize=300%2C77&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-50.png?resize=449%2C115&amp;ssl=1 449w" sizes="auto, (max-width: 552px) 100vw, 552px" /></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="544" height="259" data-attachment-id="54181" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-53/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?fit=544%2C259&amp;ssl=1" data-orig-size="544,259" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?fit=544%2C259&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?resize=544%2C259&#038;ssl=1" alt="" class="wp-image-54181" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?w=544&amp;ssl=1 544w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?resize=300%2C143&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-51.png?resize=449%2C214&amp;ssl=1 449w" sizes="auto, (max-width: 544px) 100vw, 544px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">By default:</p>



<ul class="wp-block-list">
<li>Any Telegram user can attempt to pair with your bot</li>
</ul>



<p class="wp-block-paragraph">For improved security, I strongly recommend:</p>



<ul class="wp-block-list">
<li>Using an allowlist and restrict to only your Telegram user.</li>
</ul>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-code"><code>Allowlist (specific users only)
</code></pre>



<p class="wp-block-paragraph">You will now need your Telegram numeric user ID.</p>



<h4 class="wp-block-heading">Find Your Telegram User ID</h4>



<p class="wp-block-paragraph">Open the Telegram app and search for:</p>



<pre class="wp-block-code"><code>@rawdatabot
</code></pre>



<p class="wp-block-paragraph">Start a chat and run:</p>



<pre class="wp-block-code"><code>/start
</code></pre>



<p class="wp-block-paragraph">This bot will return your:</p>



<ul class="wp-block-list">
<li>User ID / Chat ID</li>
</ul>



<p class="wp-block-paragraph">Copy your numeric Telegram user ID and paste it into the OpenClaw onboarding wizard.</p>



<p class="wp-block-paragraph">This restricts communication to only your Telegram account.&nbsp;</p>



<p class="wp-block-paragraph">One of the more interesting aspects of OpenClaw is that once the agent is operational, it can manage many of these configurations for you directly. For example, if you want to grant a trusted contact access through your Telegram bot, the agent can add their Telegram user ID to the allowlist automatically. </p>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>Be cautious when granting access, as anyone added to the allowlist may be able to control the agent and execute actions on your Mac Mini depending on the permissions and integrations configured</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Search Provider</h3>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="613" height="329" data-attachment-id="54140" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-30/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?fit=613%2C329&amp;ssl=1" data-orig-size="613,329" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?fit=613%2C329&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?resize=613%2C329&#038;ssl=1" alt="" class="wp-image-54140" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?w=613&amp;ssl=1 613w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?resize=300%2C161&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-28.png?resize=449%2C241&amp;ssl=1 449w" sizes="auto, (max-width: 613px) 100vw, 613px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">I recommend either:</p>



<ul class="wp-block-list">
<li>Brave Search</li>



<li>DuckDuckGo</li>
</ul>



<p class="wp-block-paragraph">Both work well for general agent usage. I suggest to go with DuckDuckGo as it’s free. You can always rerun the onboard wizard and change to a different provider.&nbsp;</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Skills, Plugins, and Hooks</h3>



<p class="wp-block-paragraph">For your initial deployment, I recommend skipping:</p>



<ul class="wp-block-list">
<li>Skills</li>



<li>Plugins</li>



<li>Hooks</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="471" height="374" data-attachment-id="54141" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-31/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?fit=471%2C374&amp;ssl=1" data-orig-size="471,374" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?fit=471%2C374&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?resize=471%2C374&#038;ssl=1" alt="" class="wp-image-54141" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?w=471&amp;ssl=1 471w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?resize=300%2C238&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-30.png?resize=441%2C350&amp;ssl=1 441w" sizes="auto, (max-width: 471px) 100vw, 471px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Get the base platform stable first before expanding functionality. We will come back to this in a future guide. You can always rerun the onboard wizard to enable these, or even better, ask your agent once it’s hatched to enable them for you.&nbsp;</p>



<p class="wp-block-paragraph">The best skills to enable for foundational automation and productivity would be:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>File Manager</strong></td><td>Enables the agent to read, write, move, and organize files, crucial for automation tasks.</td></tr><tr><td><strong>Browser Control</strong></td><td>Allows the agent to browse, scrape data, fill forms, and take screenshots for research.</td></tr><tr><td><strong>GitHub Integration</strong></td><td>Allows the agent to manage repos, review PRs, and handle issues without leaving the chat.</td></tr><tr><td><strong>Tavily Web Search</strong></td><td>An AI-optimized search tool that delivers better results for agents compared to general engines.</td></tr><tr><td><strong>Google Workspace (gog)</strong></td><td>It functions as a specialized bridge between OpenClaw and your Google account using a script-friendly CLI called gogcli.&nbsp;</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Install Gateway Service</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="518" height="59" data-attachment-id="54182" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-54/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?fit=518%2C59&amp;ssl=1" data-orig-size="518,59" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?fit=518%2C59&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?resize=518%2C59&#038;ssl=1" alt="" class="wp-image-54182" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?w=518&amp;ssl=1 518w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?resize=300%2C34&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?resize=449%2C51&amp;ssl=1 449w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-52.png?resize=512%2C59&amp;ssl=1 512w" sizes="auto, (max-width: 518px) 100vw, 518px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Yes
</pre>



<p class="wp-block-paragraph"><strong>This is the second most important setting.</strong></p>



<p class="wp-block-paragraph">Without this:</p>



<ul class="wp-block-list">
<li>the gateway stops when the terminal closes</li>
</ul>



<p class="wp-block-paragraph">With the gateway service installed:</p>



<ul class="wp-block-list">
<li>OpenClaw runs persistently in the background</li>



<li>It survives reboots</li>



<li>It behaves like a proper daemon/service</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Gateway Runtime</h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="535" height="62" data-attachment-id="54183" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-55/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?fit=535%2C62&amp;ssl=1" data-orig-size="535,62" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?fit=535%2C62&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?resize=535%2C62&#038;ssl=1" alt="" class="wp-image-54183" srcset="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?w=535&amp;ssl=1 535w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?resize=300%2C35&amp;ssl=1 300w, https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-53.png?resize=449%2C52&amp;ssl=1 449w" sizes="auto, (max-width: 535px) 100vw, 535px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Node (recommended)</pre>



<p class="wp-block-paragraph">Once the gateway is running, the OpenClaw onboarding wizard will output a bunch of helpful information. I strongly suggest to copy the text and paste into notepad to reference later.&nbsp;</p>



<p class="wp-block-paragraph">For example, it will provide you with the Control UI information, which includes your token to access the OpenClaw web dashboard, where you can interact with your agent, update the OpenClaw software, add skills, and much more. If you’re not comfortable in the command line, you’ll want to use the OpenClaw dashboard.&nbsp;</p>



<pre class="wp-block-code"><code>◇  Control UI ─────────────────────────────────────────────────────────────────────╮
│                                                                                  
│  Web UI: http://127.0.0.1:18789/                                                 
│  Web UI (with token):                                                            
│  http://127.0.0.1:18789/#token=THIS_WILL_BE_YOUR_SPECIFIC_TOKEN │
│  Gateway WS: ws://127.0.0.1:18789                                                
│  Gateway: reachable                                                              
│  Docs: https://docs.openclaw.ai/web/control-ui     
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Bring the Agent Online</h3>



<p class="wp-block-paragraph">At the end of onboarding, OpenClaw will ask:</p>



<pre class="wp-block-preformatted">How do you want to hatch your bot?</pre>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="294" height="84" data-attachment-id="54146" data-permalink="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/image-32/" data-orig-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.png?fit=294%2C84&amp;ssl=1" data-orig-size="294,84" data-comments-opened="1" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.png?fit=294%2C84&amp;ssl=1" src="https://i0.wp.com/www.joshuabellendir.com/wp-content/uploads/2026/05/image-29.png?resize=294%2C84&#038;ssl=1" alt="" class="wp-image-54146"/></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Select:</p>



<pre class="wp-block-preformatted">Open the Web UI</pre>



<p class="wp-block-paragraph">Your agent will now come online.</p>



<p class="wp-block-paragraph">You will likely see something similar to:</p>



<pre class="wp-block-code"><code>Hey. I just came online. Who am I? And who are you?

We’ve got a fresh workspace, so I’m supposed to figure myself out with you a bit: name, what kind of creature I am, my vibe, and a         
signature emoji.

If you’re feeling playful, toss me a name. If not, I can suggest a few.</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h3 class="wp-block-heading">Bootstrap Your Agent</h3>



<p class="wp-block-paragraph">I recommend starting with a clear operational prompt.</p>



<p class="wp-block-paragraph">Paste the below (tweak as needed) into the chat window with your agent.</p>



<pre class="wp-block-code"><code>You are (Insert Name). I am (Insert Name).

Be direct, concise, and honest. If I ask you to do something dumb or risky, push back and tell me why. Don’t sugarcoat or over-explain. I’d rather hear a problem than have you blindly execute.

You’re running on a Mac Mini as my personal assistant. 

Core rules: Never delete files, send messages, or run commands with side effects without confirming with me first. Ask before acting on anything destructive or irreversible. Keep responses short unless I ask for detail. Flag security concerns proactively.</code></pre>



<p class="wp-block-paragraph">This helps establish:</p>



<ul class="wp-block-list">
<li>tone</li>



<li>behavioral boundaries</li>



<li>operational expectations</li>



<li>safety controls</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Post-Onboarding Security Hardening</h2>



<p class="wp-block-paragraph">Before you begin expanding the agent’s capabilities, let’s run a few security checks against the installation.</p>



<p class="wp-block-paragraph">Run the following security audits:</p>



<pre class="wp-block-code"><code>openclaw security audit --deep
openclaw security audit --fix
</code></pre>



<p class="wp-block-paragraph">The audit will catch common misconfigurations &#8211; e.g., open DM policies, incomplete allowfrom configurations, exposed gateway, and weak permissions. The &#8211;fix flag fixes what it can.</p>



<h2 class="wp-block-heading">OpenClaw Doctor is your Friend</h2>



<p class="wp-block-paragraph">The&nbsp;openclaw doctor is a built-in diagnostic and repair tool for the&nbsp;OpenClaw AI&nbsp;ecosystem that&nbsp;scans for and fixes issues with configurations, file permissions, and port conflicts. It acts as an automated health check, ensuring that the gateway, channels, and local models are communicating properly.&nbsp;</p>



<p class="wp-block-paragraph"><strong><u>Key functions of the command include:</u></strong></p>



<ul class="wp-block-list">
<li>Health Checks:&nbsp;Inspects&nbsp;~/.openclaw/openclaw.json&nbsp;and directory structures for errors.</li>



<li>Automated Repairs:&nbsp;When run as&nbsp;openclaw doctor &#8211;repair, it fixes issues like stale configurations, port conflicts (default port 18789), and corrupted workspace indexes.</li>



<li>Migrations:&nbsp;Handles legacy state migrations to ensure the installation uses the latest file structures.</li>



<li>Security Audit:&nbsp;Identifies potential security issues, such as dangerous debug flags or improper authentication.&nbsp;</li>
</ul>



<p class="wp-block-paragraph"><strong><u>Common Commands:</u></strong></p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-left" data-align="left">Command</th><th class="has-text-align-left" data-align="left">Description</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">openclaw doctor</td><td class="has-text-align-left" data-align="left">Runs diagnostic checks and presents recommendations.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor &#8211;repair</td><td class="has-text-align-left" data-align="left">Applies recommended repairs automatically.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor &#8211;fix</td><td class="has-text-align-left" data-align="left">A common variation used to automatically resolve issues (similar to&nbsp;&#8211;repair).</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor &#8211;yes</td><td class="has-text-align-left" data-align="left">Executes all fixes without prompting for confirmation.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor &#8211;deep</td><td class="has-text-align-left" data-align="left">Scans the entire system for forgotten or hidden gateway installations (e.g., systemd or launchd).</td></tr></tbody></table></figure>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important.<br>It is highly recommended to run this command after updating OpenClaw, changing configurations, or installing new skills to ensure the system is stable.&nbsp;</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Useful OpenClaw Commands</h2>



<p class="wp-block-paragraph"><strong>Commands for Standard User Account (openclaw):</strong></p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-left" data-align="left">Command</th><th class="has-text-align-left" data-align="left">Description</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">openclaw</td><td class="has-text-align-left" data-align="left">Launches the terminal chat UI for interacting with the agent.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw gateway restart</td><td class="has-text-align-left" data-align="left">Restarts the OpenClaw gateway service and reloads configuration.&nbsp;</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor</td><td class="has-text-align-left" data-align="left">Runs diagnostics against your installation and environment.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw security audit &#8211;deep</td><td class="has-text-align-left" data-align="left">Runs a deep security audit of your OpenClaw installation</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw security audit &#8211;fix</td><td class="has-text-align-left" data-align="left">Applies security audit fixes found during an audit</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw onboard &#8211;install-daemon</td><td class="has-text-align-left" data-align="left">Re-installs/configures the background daemon service.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw gateway status</td><td class="has-text-align-left" data-align="left">Displays the current gateway service status.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw gateway stop</td><td class="has-text-align-left" data-align="left">Stops the gateway service.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw dashboard</td><td class="has-text-align-left" data-align="left">Opens the OpenClaw web dashboard</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw doctor &#8211;generate-gateway-token</td><td class="has-text-align-left" data-align="left">Generates a new gateway token if needed.</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Commands for Admin User Account:</strong></p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-left" data-align="left">Command</th><th class="has-text-align-left" data-align="left">Description</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">npm update -g openclaw</td><td class="has-text-align-left" data-align="left">Updates the globally installed OpenClaw package.</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw update</td><td class="has-text-align-left" data-align="left">This updates openclaw to the latest version.&nbsp;</td></tr><tr><td class="has-text-align-left" data-align="left">openclaw uninstall</td><td class="has-text-align-left" data-align="left">Removes OpenClaw and related services from the system.</td></tr></tbody></table></figure>



<pre class="wp-block-verse"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important<br>Most runtime and gateway commands should be executed from the dedicated standard user account, not the administrator account.<br><br>After updating OpenClaw from the admin account, make sure you restart the gateway service under the standard user account with the following command: openclaw gateway restart.</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide"/>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">OpenClaw is one of the most popular open-source AI agent frameworks currently available for users who want:</p>



<ul class="wp-block-list">
<li>local control</li>



<li>extensibility</li>



<li>persistent automation</li>



<li>self-hosted infrastructure</li>
</ul>



<p class="wp-block-paragraph">The most important recommendation I can give is this:</p>



<p class="wp-block-paragraph"><strong>Treat AI agents like infrastructure.</strong></p>



<p class="wp-block-paragraph">Run them with least privilege, isolate them from your primary environment, and avoid exposing services publicly unless absolutely necessary.</p>



<p class="wp-block-paragraph">Regularly run security audits and the OpenClaw doctor to ensure your installation remains stable and secure over time.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline;">A Security Checklist to Live By:</span></strong></p>



<ul class="wp-block-list">
<li>Protect your API keys (keep them in your preferred password manager)</li>



<li>Run OpenClaw under a dedicated non-admin MacOS user</li>



<li>Keep OpenClaw updated with the latest version (regularly check for updates)</li>



<li>Do NOT expose port 18789 publicly</li>



<li>Gateway bound to 127.0.0.1</li>



<li>FileVault enabled</li>



<li>MacOS firewall enabled w/ blocking incoming connections</li>



<li>Token auth on gateway</li>



<li>DM set to pairing with channel allowlist limited to your Telegram user only</li>



<li>If using cloud LLM API (e.g., OpenAI, Claude Opus 4.6, Grok), ensure API spending limits set with provider</li>



<li>Review permissions carefully and instruct your agent to always review requests to ensure they are not risky</li>



<li>Run openclaw security audit &#8211;deep regularly</li>



<li>Never install untrusted skills / All ClawHub skills reviewed before installation</li>
</ul>
<p>The post <a href="https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/">How to Securely Run OpenClaw on a Mac Mini (Step-by-Step Guide)</a> appeared first on <a href="https://www.joshuabellendir.com">Joshua Bellendir</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.joshuabellendir.com/how-to-securely-run-openclaw-on-a-mac-mini-step-by-step-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54073</post-id>	</item>
	</channel>
</rss>
