{"slug": "my-coworker-iris-isn-t-a-person", "title": "My coworker Iris isn't a person", "summary": "CrewAI engineer Vini used an AI agent named Iris to quickly fix a bug where users' API keys were failing validation due to untrimmed whitespace, reducing a nine-step process to three minutes. The agent, built on CrewAI and integrated with Slack, autonomously opened a pull request with the fix, allowing Vini to avoid context switching and close the mental loop caused by the Zeigarnik effect.", "body_md": "# My coworker Iris isn't a person\n\nMy PM dropped a DM:\n\nHey Vini, users were pasting their API keys into our settings page and getting “invalid key”, but the keys were fine. Mind taking a look at this?\n\nI knew what the issue was before I finished reading it. We weren’t trimming the trailing newline people copy along with the key. I knew, just as fast, what fixing it would cost me:\n\nLeave the Slack thread, stash my current work, create a new branch, open the editor, run Claude Code, review the diff, merge the PR, deploy it to production, come back to Slack to say it’s done.\n\nNine steps for two lines of logic. So I did what any engineer would do: I decided it could wait until I finished my current task.\n\nWhat I didn’t know is that just by acknowledging the new task I’d opened a loop\nmy brain refused to close. There’s a name for it: the [Zeigarnik\neffect](https://en.wikipedia.org/wiki/Zeigarnik_effect).\n\nThis time I typed something different on Slack. `@Iris, this is probably lacking a whitespace trim. Open a PR`\n\n. A PR link appeared in the same thread.\nShe’d found the right handler, trimmed it, and even added a\ntest for the newline case. I skimmed the diff, hit merge, and went back to what\nI was doing. The loop closed within three minutes.\n\nIris is the AI agent we provisioned on Slack at CrewAI. She’s built on CrewAI\nitself and wired into our internal tooling. We tag `@Iris`\n\nand she can kick off\ncrews, file Linear issues, run Claude Code, open PRs, send emails. None of this\nis new:\n[Linear](https://linear.app/changelog/2025-10-23-linear-agent-for-slack),\n[GitHub](https://github.blog/news-insights/product-news/github-copilot-meet-the-new-coding-agent/),\nand [Devin](https://devin.ai/) all let you hand work to an agent the way you’d\nassign it to a teammate, and Salesforce now calls Slack [the interface for the\nagentic\nenterprise](https://www.salesforce.com/slack/slackbot/agent-orchestration/).\n\nI’ll admit I was skeptical about agents autonomously writing to our codebases.\nAnd for real engineering work, that skepticism *still* holds. Hand Iris\nsomething complex and the cost of writing the code just becomes [the cost of reviewing it](/when-i-reject-ai-code-even-if-it-works/), and I\nend up babysitting threads instead of writing software.\n\nBut that’s not what surprised me. What surprised me is that for the small stuff\nI context switch *less*, even for code.\n\nThanks, Iris. And please remember me when robots take over.", "url": "https://wpnews.pro/news/my-coworker-iris-isn-t-a-person", "canonical_source": "https://vinibrasil.com/my-coworker-iris-isnt-a-person/", "published_at": "2026-06-14 00:00:00+00:00", "updated_at": "2026-06-21 01:43:30.202931+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["CrewAI", "Iris", "Vini", "Slack", "Claude Code", "Linear", "GitHub", "Devin"], "alternates": {"html": "https://wpnews.pro/news/my-coworker-iris-isn-t-a-person", "markdown": "https://wpnews.pro/news/my-coworker-iris-isn-t-a-person.md", "text": "https://wpnews.pro/news/my-coworker-iris-isn-t-a-person.txt", "jsonld": "https://wpnews.pro/news/my-coworker-iris-isn-t-a-person.jsonld"}}