gitlab

Fix bugs with Codex and GitLab (opens in new tab)

Codex accelerates coding in the terminal, but producing a fix is only one part of shipping software. GitLab supplies the surrounding lifecycle: issues, merge requests, CI/CD, security scanning, code review, and human approval. The tutorial demonstrates this progression through a Rust WebSocket bug, first with local Codex, then with GitLab MCP for issue context, and finally with Codex as an external agent in GitLab Duo Agent Platform.

Prerequisites and Project Setup

  • Configure Codex in the terminal, Rust/Cargo, and access to a GitLab project.
  • Import and clone the Tanuki IoT Platform project, then launch Codex from its repository root.
  • The tutorial focuses on backend/, where:
    • Sensors submit readings through a REST API.
    • Dashboards receive live readings through WebSocket streams.
  • AGENTS.md provides Codex with repository structure, toolchain instructions, build commands, and quality expectations.

Reproducing the WebSocket Filtering Bug

  • Start the Rust metrics backend on port 9090:

    PORT=9090 cargo run --manifest-path backend/rust-metrics-store/Cargo.toml
    
  • Connect to a filtered WebSocket stream:

    websocat 'ws://localhost:9090/ws?sensor=arduino-iot-collector&metric=temperature_celsius'
    
  • Submit both temperature and humidity readings for the same sensor through the REST API.

  • The stream incorrectly returns both metrics instead of only temperature_celsius, proving that the WebSocket handler does not apply the metric filter.

Fixing the Bug with Codex

  • Give Codex a focused request to add metric filtering to /ws.
  • Codex examines the Rust source and identifies that the endpoint already supports sensor filtering but lacks an optional metric condition.
  • It updates the handler, adds tests, and keeps documentation aligned with the implementation.
  • Codex runs formatting, tests, and builds before creating a branch, committing, and pushing the change.
  • Once the merge request is created, GitLab handles:
    • CI/CD pipelines
    • Security scanning
    • GitLab Duo Code Review
  • A follow-up WebSocket test confirms that supplying both sensor and metric now returns only the requested metric.

Adding GitLab Context with MCP

  • Local Codex can inspect repository files, but it cannot automatically see GitLab issues, requirements, implementation notes, merge-request discussions, or pipeline status.
  • The GitLab MCP server connects Codex to that development lifecycle context.
  • Codex can retrieve the existing issue directly instead of requiring the developer to copy its contents into the prompt.
  • The issue acts as the shared source of truth and includes:
    • The bug description
    • Functional behavior requirements
    • Non-functional requirements
    • Required tests
    • Updates to README.md and AGENTS.md
    • Implementation notes
  • This helps Codex produce a fix that satisfies the agreed requirements rather than merely addressing the symptom visible in the local code.

Using Codex as an External GitLab Agent

  • The tutorial’s third workflow uses Codex inside GitLab Duo Agent Platform as an external agent.
  • This allows the agent to participate after the merge request is open, particularly when addressing review feedback.
  • GitLab remains the system coordinating issues, merge requests, pipelines, reviews, and deployment, while Codex contributes its terminal-oriented coding capabilities.
  • The overall workflow moves from bug report to implementation, automated validation, review feedback, revisions, and an informed human decision to ship.

Practical Conclusion

Use Codex for fast, repository-local implementation, but connect it to GitLab through MCP or Duo Agent Platform when requirements and review context matter. The strongest workflow combines Codex’s coding speed with GitLab’s issue-aware, automated, and human-governed delivery lifecycle.